博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
智能合约重构社会契约(7)以太坊总结
阅读量:4203 次
发布时间:2019-05-26

本文共 920 字,大约阅读时间需要 3 分钟。

1. 智能合约相关

  • 合约账户和外部账户分开

  • 合约账户对外部账户一律平等,即使是发起该合约创建请求的外部账户也没有对合约账户的特殊权限。

  • 合约只有在交易调用时才会运行:使用地址对象或者msg对象来调用合约或者合约中的函数,并将输入作为参数输入合约。

  • 调用方式既可以是外部账户的交易调用合约,也可以是合约调用另一个合约。

  • 合约不能“独立运行”或者“后台运行”,通常情况下合约处于休眠状态,只有被调用触发时才会执行。

  • 合约的数据来源于该合约被调用时的参数输人,或者调用其他合约时的返回值。

2. 以太坊智能合约的流程

2.1 合约创建

step1. 用户通过Solidity等编程语言编写合约代码并广播到网络中

step2.节点接收到交易,验证交易是否有效,格式是否正确、签名是否合法,同时判断用户余额是否能够扣除最大交易费。
step3. 如果这些验证都成功,节点会将交易存放到交易池中并广播给其他节点。

2.2 合约部署

step1. 每个节点都会各自从本地的交易池中取出一批交易打包进行hash 计算

step2. 如果该节点获得记账权且打包区块中存在创建合约请求的交易,会根据交易中的合约代码创建合约账户
step3. 节点在账户空间中部署合约,合约账户地址在创建合约交易确认后发送给发起该笔交易的用户。
step4. 节点将区块广播给其他节点,这些节点接收到区块并对区块和区块中的交易验证成功后,同样会创建合约账户。

2.3 合约执行

如果有合约调用的交易,节点在获得记账权并将其打包到区块的时候,会在EVM中执行调用的合约并修改本地区块链中的数据,如果执行失败则回滚到代码执行前的状态。

最后把区块广播给其他节点,这些节点重复上述执行操作。

2.4 合约升级

  • 在以太坊中,部署到区块链上的代码是不可改变的。
  • 部署一个拥有调用转发功能的智能合约,将接收到的调用转发给另外一个包含逻辑功能的合约地址,当合约进行升级时.只需要部署一个新的合约并修改转发的目标地址以指向新的合约。

2.5 合约销毁

可以将代码删除及其内部状态(存储)以留下空白账户。

  • 要销毁合约.需要调用合约中的自毁函数,这个函数是合约作者编写的加果没有则不能删除智能合约。

转载地址:http://dovli.baihongyu.com/

你可能感兴趣的文章
Android关机流程源码分析
查看>>
使用函数
查看>>
[sed] linux sed 批量替换字符串
查看>>
Android ART运行时无缝替换Dalvik虚拟机的过程分析
查看>>
Android应用程序与SurfaceFlinger服务的连接过程分析
查看>>
Android编译系统简要介绍和学习计划
查看>>
Android编译系统环境初始化过程分析
查看>>
user2eng 笔记
查看>>
美国Ivanpah太阳能发电站:飞经这里的鸟都被烧焦了
查看>>
DRM in Android
查看>>
Android 4.4特性说明(持续更新)
查看>>
java基本数据类型
查看>>
a++运算符
查看>>
repo 的一些用法和理解
查看>>
Android如何防止apk程序被反编译
查看>>
如何提高Android代码的安全性
查看>>
Android应用如何实现换肤功能
查看>>
UNIX IO---再谈文件描述符
查看>>
dup,dup2
查看>>
signal(SIGPIPE, SIG_IGN)
查看>>