Commit c5b4196c authored by 谢昇's avatar 谢昇

Update chain33.md

parent 4f4159e9
# Chain33平台架构的特点
......@@ -10,6 +10,8 @@ Chain33创造性的支持分层的架构,主链负责交易清算,智能合
**1、共识、数据库、执行器(合约),对chain33的纵向扩展;**
**2、平行链,对chain33的横向扩展。**
这里主要介绍执行器和平行链的相关内容。
# chain33系统中的合约
chain33系统中的合约,也可以称为执行器(executor),是chain33架构纵向扩展的核心。
......@@ -22,22 +24,24 @@ chain33系统中的合约,也可以称为执行器(executor),是chain33
**2、合约地址:16htvcBNSEA7fZhAdLJphDwQRQJaHpyHTp**
每个合约拥有一个唯一的合约地址,该地址从合约创造出来开始就被固定并唯一,这个合约地址不存在私钥;
对于任何一个已知的合约名,都可以在chain33中查询该合约的合约地址。
![查询合约地址](https://gitlab.33.cn/flyaway53/test/raw/master/img-folder/8.png)
## chain33合约的使用
对于chain33合约,有一个最大的原则:
**合约只允许操作自己合约内部的代币**
对于chain33合约,存在一个**资产控制权**的概念。
想要使用对应合约的功能,首先需要将资产控制权转移(TransferToExec)给对应合约;从表现上来看,就是将资产转入了对应的合约地址。
为了合约调用的安全考虑,只允许合约中主动向其他合约转账,而不允许其他合约从本合约中取款。
为了合约调用的安全考虑,只允许合约**主动**向其他合约转账,而不允许其他合约从本合约中取款。
同样以挖矿合约举例,要进行挖矿操作,需要从coins合约中主动向ticket合约转账,之后才允许ticket合约本身,对合约中的代币进行操作。我们钱包中开启自动挖矿的操作已经集成了该步操作。
再以token C2C举例,想要进行token的C2C交易,需要首先将token合约中的代币,从token合约转入到trade合约,之后才允许trade合约使用;而不允许trade合约调用token合约中的代币。
而当想从其他合约取回代币时,也是由coins合约或token合约执行取回(withdraw)操作。
转移资产控制权后,合约可以任意控制资产,主要包括冻结、解冻、增加、减少等操作。
而对应的,存在转回资产控制权(withdraw)的操作,将资产的控制权限转移回来。之后合约对资产控制权限终止。
目前对于主链上来说,coins、token、paracross三个合约支持
所以chain33的合约系统事实上是扁平化的格局,所有合约在权限上都是平等的,既无权调用其他合约的代币,也无权被其他合约调用;想要使用其他合约的功能,只能主动想其他合约转入代币。
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment