区块链学习第二期
前端基础知识
[toc] ---html 中标签的定义
我们都知道,html 中可以使用<p></p>这些标签去定义内容,但是如何能定义自己的标签呢?例如我想用“ZYN”这个名字作为一个标签,怎么办呢?
此时就需要 js 了:
1 | class 周亚男 extends THMLElement{ |
伪类和伪元素
语法 | 数量 | 位置 | 类与元素 | 使用场景 | |
---|---|---|---|---|---|
伪类 | : | 多个 | 前后方 | 修饰(基于 dom) | 多 |
伪元素 | :: | 单个 | 后方 | 创建对象 | 少(关键) |
form 表单与 php(这是我认为最重要的)
form 能给我一个最直观的前后端数据交互的体验
表单:在网页中主要负责数据采集功能,基本正常网页都有这样一个控件
表单:可以看作是一个表单容器。
- 一个或者多个输入框
- 一个提交按钮或者一个重置按钮
- 通过 dom 对象拓展的 forms 属性拿到具体表单
- HTMLFormElement:
属性 介绍 action 请求的 URL,等价于 html 中的 action,提交到哪里 elements 表单中所有控件的 HTMLCollection method HTTP 请求的方法类型 reset 设置表单默认值 submit 提交表单
工作流程
- 数据收集
- 表单单域内部的输入控件获得用户输入的值
- 常见输入控件:input、textarea、select
- type 属性的值决定了唤起的键盘是什么类型:number、password、text、file(传文件)···
- 当然 html5 还有更多关于时间、颜色 type 的更新
- 表单单域内部的输入控件获得用户输入的值
- 数据校验
- 数据提交
理解
不管是一般的企业网站还是复杂的网络应用,都离不开数据的添加。通过 php 服务器脚本语言,程序可以处理那些通过服务器对 web 应用进行数据调用或添加的请求。
- web 邮箱
- qq 留言
虽然 form 是 html 的,但是 php 与 form 的衔接是无缝的。php 关心怎么获得和使用 form 的数据。
处理表单的基本过程:
- 数据从 web 表单发送到 php 代码(action=“xxx.php”)
- 经过处理在生成 html 输出
- php 会检查 url、表单数据、上传文件、可用 cookie、web 服务器和环境变量
- 如果有可用信息,就可以通过 php 访问自动全局变量数组$_XXX
标签区分
标签权重
权重的大小
- !important,加在样式属性值后,权重值为 10000
- 内联样式,如:style=””,权重值为 1000
- ID 选择器,如:# content 权重为 100
- 类,伪类,属性选择器如:content、:hover 权值为 10
- 标签选择器和伪元素选择器,如:div、p、:before 权值为 1
- 通用选择器(*)、子类选择器(>)、相邻选择器(+)、同胞选择器(~)权值为 0
jquery 的顶级对象$
- $是 jq 的别称,为了方便
- 是 jq 的顶级对象,相当于原生 js 的 window,包装成 jq 对象。利用$对 dom 对象包装后产生的对象(伪数组存储对象)bow
json and ajax?
ajax:一种用于创建更好更快以及交互性更强的 web 应用程序技术。它无需刷新页面便可以从服务器获取数据
json:一种用户数据交互的格式
对比一下:很明显,json 简单得多
1 | <student> |
1 | { |
区块链知识
对区块链矿工以及挖矿上链的思考
在做完第一次简单的区块链实验后,不禁加深了对区块链的思考。我还有很多基础知识没有学透或者学的混杂了。
实验:
- 获取一个地址的 CBI 余额;
- 获取一个区块的哈希值;
- 获取上一个区块的哈希值;
- 获取当前的时间戳;
- 获取当前区块的高度;
- 获取当前区块的难度(difficulty);
- 获取当前区块的 gas limit;
- 获取当前区块的 coinbase 账户;
- 部署合约到内部教学链;
- 在 Remix IDE 中调用合约的所有方法,查看数据;
测试结果:
解释一下:本次实验是老师提供的测试链和测试币
实验疑问:(提问方式)
老师的链是自己写的吗?用什么写的?是不是很厉害?
>可以可以。应该是自己的写的,不过这种链去太坊fork一块也可以。任何语言都可以,但一般用go语言写,然后部署在云服务器上我们班明明就几十个人,为什么我部署合约查到的区块高度已经是6813了呀?
>首先你不是把整个合约部署到链上,而是把部署合约这笔交易的哈希记录在链上,而高度那么高,是因为有 **空区块** 的存在 - 区块头主要用来记录说明信息,而区块体则是用来记录交易。真正的数据记录在客户端的数据库列表中空区块怎么来的啊?还有那个coinbase有什么用啊?矿工怎么挖出来的?我们都在做交易,那矿工是谁?
梳理一下挖矿全过程
参考:区块链交易过程是怎样的
交易怎么进入区块的?
一直以来有困惑
- 私钥确定是完全不能重复的吗?虽然是 256 位二进制。
- 节点说的是矿工节点吗,还是所有的节点
- 矿工是如何一边打包交易一边破解随机数的,交易被确认的过程不是在网络中广播的过程吗?
- 比如,我在打包,你也在打包,咱们俩是打的同一个吗?
还是各自打包各自的,谁破解谜题了谁的区块就得到认可。
或者说咱们面对的是同一个交易池吗? - 我不能理解的是交易是如何被打包进区块的,比如有一万笔交易,只有 1000 笔被确认,但是这一万笔都被广播了,莫非会有一些处于“未确认”的状态?等待着被打包进下一个区块?
- 私钥并不是完全不重复,只是说在地球上,这种重复的概率几乎为 0 ;
私钥是程序生成的 256 位二进制的随机数。他的大小是 10^76 这个量级的。宇宙所有原子的量级大概是 10^80。重复的概率微乎其微。 - 节点就是矿工,你的电脑也可以作为一个节点,虽然算力很小;
- 交易在一个内存池(队列)里,矿工尝试打包,取出交易,计算难题,计算出来了,于是加上自己的签名,完成确认过程。没有准确的时间先后的问题。
但是我还有疑惑,是不是可以这样理解,在未找到答案之前,有许多区块,谁找到答案,谁的区块就被打到区块链中,进而区块中的交易被确认,并且可以进行下一步的交易。
接着就有了下面的回答:
- 一个交易可能在不同的节点上的队列里 ,就像你在一班排第三,在三班可能排第九。
- 然后有一个区块打包会包含这个交易,其他节点处理是会把交易抛弃掉。所以,一个交易只能被包含到一个区块里。
区块提交后,其他节点进行同步,同步该区块,并对区块中的每个交易进行验证,如果发现有交易是本地队列已经有的,就将该交易从自己的队列里剔除。