智能合约重构社会契约以太坊总结
Posted thefist11
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了智能合约重构社会契约以太坊总结相关的知识,希望对你有一定的参考价值。
1. 智能合约相关
-
合约账户和外部账户分开
-
合约账户对外部账户一律平等,即使是发起该合约创建请求的外部账户也没有对合约账户的特殊权限。
-
合约只有在交易调用时才会运行:使用地址对象或者msg对象来调用合约或者合约中的函数,并将输入作为参数输入合约。
-
调用方式既可以是外部账户的交易调用合约,也可以是合约调用另一个合约。
-
合约不能“独立运行”或者“后台运行”,通常情况下合约处于休眠状态,只有被调用触发时才会执行。
-
合约的数据来源于该合约被调用时的参数输人,或者调用其他合约时的返回值。
2. 以太坊智能合约的流程
2.1 合约创建
step1. 用户通过Solidity等编程语言编写合约代码并广播到网络中
step2.节点接收到交易,验证交易是否有效,格式是否正确、签名是否合法,同时判断用户余额是否能够扣除最大交易费。
step3. 如果这些验证都成功,节点会将交易存放到交易池中并广播给其他节点。
2.2 合约部署
step1. 每个节点都会各自从本地的交易池中取出一批交易打包进行hash 计算
step2. 如果该节点获得记账权且打包区块中存在创建合约请求的交易,会根据交易中的合约代码创建合约账户
step3. 节点在账户空间中部署合约,合约账户地址在创建合约交易确认后发送给发起该笔交易的用户。
step4. 节点将区块广播给其他节点,这些节点接收到区块并对区块和区块中的交易验证成功后,同样会创建合约账户。
2.3 合约执行
如果有合约调用的交易,节点在获得记账权并将其打包到区块的时候,会在EVM中执行调用的合约并修改本地区块链中的数据,如果执行失败则回滚到代码执行前的状态。
最后把区块广播给其他节点,这些节点重复上述执行操作。
2.4 合约升级
- 在以太坊中,部署到区块链上的代码是不可改变的。
- 部署一个拥有调用转发功能的智能合约,将接收到的调用转发给另外一个包含逻辑功能的合约地址,当合约进行升级时.只需要部署一个新的合约并修改转发的目标地址以指向新的合约。
2.5 合约销毁
可以将代码删除及其内部状态(存储)以留下空白账户。
- 要销毁合约.需要调用合约中的自毁函数,这个函数是合约作者编写的加果没有则不能删除智能合约。
以上是关于智能合约重构社会契约以太坊总结的主要内容,如果未能解决你的问题,请参考以下文章