8肖臻区块链_听课笔记

权益证明,用户拥有的币数,闭环,发动攻击的资源只能从加密货币内部获得,现在还是挖矿为主,转向权益证明有很多挑战

 

 智能合约是一段代码,面向对象,下面是一个拍卖活动,竞拍的账户调用payable函数转账竞拍

 

 调用合约的函数

 

payable才能接收外部账户钱,外部账户调用这个函数转账锁定在合约账户中

 ,将拍卖的钱发过去

外部账户没有合约代码,汽油费给矿工

 

 

 

 调智能合约的指令是矿工做的,所以给矿工汽油费

 

 

 

 

 

 gaslimit矿工可以微调,1/1024,区块链发布一个交易本来就是需要所有的节点都执行的,在本地同步状态,全节点收到对一个合约的调用,一次性先把gas扣掉,从发起交易的账户扣掉,三棵树都是全节点在本地维护的,所以扣gas时从我本地维护的状态树中减掉即可,智能合约的修改都是改全节点本地的数据,发布到链上之后才会变成共识,收到一个区块会执行块里的交易,更新本地的三棵树

同步状态,即执行收到的区块里的交易,候选区块丢掉,先执行交易才能挖矿,因为需要执行完的树的根hash值去挖矿,收到别人发布的区块,先执行一遍按,更新三棵树的hash,和它比较进行验证是否正确

矿工必须验证,不然hash不对,以后挖不了,矿,别人不认,发布的区块不包含三棵树,只有根hash,只在本地维护,发块里太大了

执行错误的智能合约也要发布块里,拿gas

 

多线程可能造成执行结果不确定,对内存访问顺序不同,智能合约的执行必须是确定性的

 

 

 

 

 

 

 

 用交易创建合约,发布到区块链上,会返回区块链的地址,所有人都可以调用,合约账户维护状态,

 

 所有人都收不到钱,没有解决办法,code is law,智能合约写不好会出错,无法修改

智能合约发布要尽量测试

 

 任何未知的合约可能恶意,反过来调用你的合约函数

posted @ 2022-01-02 00:43  Seekerccc  阅读(80)  评论(0)    收藏  举报