code execution
EvMcode:以太坊虚拟机器语言,代码由一定长度的字节组成,不同的字节代表不同的操作
三种存储数据:基于栈,先进后出
memory,可以无限扩展的数组
storage,秘钥或有效值的存储,不同于栈和内存的永久存储。计算结束后就重置
Block chain and mining
和比特币最大的不同是以太坊包含了一系列交易和块里最近的一次交易的状态。
基本的块验证机制:
1检查上一个块存在并且正确
2检查时间戳大于前一个块并且没超过15分钟
3检查块号,难度值,交易根,叔叔根,Gasd的限制
4检查工作量证明
5 s[0]记录前一个块结束状态
6 tx[]记录一系列交易。S[i+1] = APPLY(S[i],TX[i])
7 s_final=s[n],给矿工奖励
8检查merkle树根的值s_final是否等于去块头提供的最后状态的值
即使要记录块的状态也有很高的效率,因为用树来记录,相邻的块之间只有很小的一部分不同,
所以可以是树存储一次然后直接用指针。因为执行合同代码是关于状态转换函数的一部分定义
状态转换函数是块验证算法的一部分,所以如果一个交易加到块里,将会被所有执行交易的
节点大量的执行。
Applications
1 金融应用:金融衍生物,hedging合同,存储钱包
2 半金融应用:一部分真是需要钱一部分不需要钱,如矿工通过计算解决问题获得奖励
3线上投票,分散治理
Token system(l令牌系统)
包括很多种类的资产都是,但是最重要的是所有的金融或者说令牌系统都是
对一个数据库的操作。A给B 50b .A有这么多钱的话A=A-50,B=B+50
有一个特点:在该货币中直接支付交易费用的能力。
这将是实现的方式是,合同将保持ETHER平衡,它将退还用于支付费用的ether给
发送者,它会通过收集内部的货币重新填满达到平衡,它以恒定运行拍卖拍卖掉ether
。因此,用户将需要用ETHER“激活”他们的帐户,但一旦
激活将是可重复使用的,因为该合同在将来的每一次将退还它。