Commit 9c041458 authored by 谢昇's avatar 谢昇

Update chain33.md

parent 383f48c1
......@@ -30,14 +30,17 @@ chain33蝟餌葉漲嚗隞亦妍銝箸銵嚗xecutor嚗chain33
**除了coins合约以外,其他合约只允许使用合约内的代币。**
coins合约被定义为基础合约,包括我们默认显示的余额,都是取的coins合约中的余额。
为了合约调用的安全考虑,只允许从coins合约中主动向其他合约转账,而不允许其他合约从coins合约中取款。
coins合约被定义为基础合约,包括我们默认显示的余额,都是取的coins合约中的余额。
为了合约调用的安全考虑,只允许从**coins合约**中主动向其他合约转账,而不允许其他合约从coins合约中取款。
同样以挖矿合约举例,要进行挖矿操作,需要从coins合约中主动向ticket合约转账,之后才允许ticket合约本身,对合约中的代币进行操作。我们钱包中开启自动挖矿的操作已经集成了该步操作。
而当想从其他合约取回代币时,也是由coins合约执行取回(withdraw)操作。
所以chain33的合约系统事实上是一个“一超多强”的格局,coins合约有最高权限,其他合约相互之间平等。
合约地址中的代币分为两部分:**余额及冻结**,以满足各合约的需求。
而当想从其他合约取回代币时,也是由coins合约执行取回(withdraw)操作。
所以chain33的合约系统事实上是一个“一超多强”的格局,coins合约有最高权限,其他合约相互之间平等。
合约地址中的代币分为两部分:余额及冻结,以满足各合约的需求。
![余额](https://gitlab.33.cn/flyaway53/test/raw/master/img-folder/12.png)
## 如何理解地址和合约之间的关系
......@@ -45,10 +48,11 @@ coins漲鋡怠蛹蝖漲嚗賑暺恕蝷箇
chain33系统支持两种方式转入:
1、直接指定执行器(合约)名称转入;
2、直接向指定合约地址转入。
**1、直接指定执行器(合约)名称转入;**
**2、直接向指定合约地址转入。**
对挖矿合约来说,可以使用send_exec命令,直接向ticket执行器转入;也可以使用普通的transfer命令,向16htvcBNSEA7fZhAdLJphDwQRQJaHpyHTp合约地址转入。
对挖矿合约来说,可以使用send_exec命令,直接向ticket执行器转入;
也可以使用普通的transfer命令,向16htvcBNSEA7fZhAdLJphDwQRQJaHpyHTp合约地址转入。
要理解的是,向合约地址转入代币以后,该代币实际以两种形态可以被查询:
......@@ -56,20 +60,26 @@ chain33蝟餌舅蝘撘蓮嚗
2、存在于合约地址的余额中。
但对于用户来说,实际只需关心自己的合约中的余额。
同样以挖矿合约举例,我们在主网浏览器上可以查询到16htvcBNSEA7fZhAdLJphDwQRQJaHpyHTp的余额,将余额代表当下有多少代币正在该合约中,这个值是所有其他地址转入挖矿合约的代币总和。因为合约地址不存在私钥的原则,该地址中的余额无法被私钥转出,只能以满足合约规则的方式变动。
同样以挖矿合约举例,我们在主网浏览器上可以查询到**合约地址16htvcBNSEA7fZhAdLJphDwQRQJaHpyHTp**的余额,这个余额代表当下有多少代币正在该合约中,这个值是所有其他地址转入挖矿合约的代币总和。
因为合约地址不存在私钥的原则,该地址中的余额无法被私钥转出,只能以满足合约规则的方式变动。
![合约余额](https://gitlab.33.cn/flyaway53/test/raw/master/img-folder/9.png)
也就是说我转入其他合约的代币,依然是属于我的地址的资产,只是暂时将操作权限转移给了合约;当需要的时候,随时可以使用私钥将其取回。
也就是说我转入其他合约的代币,依然是属于我的地址的资产,只是暂时将操作权限转移给了合约;
当需要的时候,随时可以使用私钥将其取回。
在查询的时候,也可以查询到我的地址在所有合约下的余额。如图可以查询到我的地址在其他合约中的余额。
![查询余额](https://gitlab.33.cn/flyaway53/test/raw/master/img-folder/10.png)
这里可以做一个类比来更好的理解。
```
我们把地址比做银行账户,地址就是账户名;
coins就是活期储蓄账户,是基础账户,其他合约就是基金账户、理财账户等等;
转入其他合约的操作就是把钱从活期中转入了其他账户的过程,而实际上这部分钱的户名都是同一个,只是暂时属于不同的分类中。
也可以操作将他们从其他类账户转回活期账户,完成整个操作。
```
## chain33合约的优势
从上面的介绍也可以看到,chain33合约的扩展性非常强。
......@@ -89,21 +99,29 @@ coins撠望瘣餅揭嚗蝖韐行嚗隞漲撠望揭
# chain33系统的平行链
合约系统是对chain33的纵向扩展,而平行链就是对系统的横向延伸。
要理解平行链的功能,我们首先需要了解一下chain33区块链传输时的一些基本信息。
从其他节点同步一个区块,分为下载、执行两个阶段。下载耗时主要依赖于网络环境;执行主要依赖于交易内容及本地机器性能。
当一个区块内交易数量很多或交易内容很大,执行区块的耗时会拉长,进而影响全网速度及tps。
而平行链的存在,是将一部分交易的执行由平行链节点完成,主链只负责打包,而不具体执行。这就等于将部分性能压力分摊在平行链节点上,从而为bityuan网络tps的提升极大地去除了限制,也为横向扩展bityuan网络增加了可能性。
要理解平行链的功能,我们首先需要了解一下chain33区块链传输时的一些基本信息。
从其他节点同步一个区块,分为**下载、执行**两个阶段。下载耗时主要依赖于网络环境;**执行**主要依赖于交易内容及本地机器性能。
当一个区块内交易数量很多或交易内容很大,执行区块的耗时会拉长,进而影响全网速度及tps。
而平行链的存在,是将一部分交易的执行由平行链节点完成,**主链只负责打包,而不具体执行**
这就等于将部分性能压力分摊在平行链节点上,从而为bityuan网络tps的提升极大地去除了限制,也为横向扩展bityuan网络增加了可能性。
平行链可以作为独立的一条链使用,同时依托于跨链合约,也可以将平行链和主链结合起来,通过主链币和平行链币的跨链交换,成为一个生态。这也是之后平行链发展使用的一个方向。
目前bityuan网络只已经有十几条平行链存在,非常有效地提升了主网的tps。之后随着平行链的扩展越来越多,相信整个网络的生态也会日益完善。
## 交易组
谈到平行链,就无法离开交易组(原子交易)使用。
交易组的概念就是,将若干笔交易,目前限制数量是2-20笔,构造成一个交易组。
组内交易必然打包进同一个区块,且该组交易要么全部成功,要么全部失败,组内任何一个交易执行失败都会让整个交易组的交易全部失败。
交易组的概念是,将若干笔交易,目前限制数量是2-20笔,构造成一个交易组。
组内交易必然打包进同一个区块,且该组交易**要么全部成功,要么全部失败**,组内任何一个交易执行失败都会让整个交易组的交易全部失败。
在交易组出现之前,chain33全网的交易遵循一个原则:任何交易都需要支付满足消耗的BTY作为手续费。
显然这种设定扩展性较差,因此交易组的设定原则是,整个交易组的手续费都由第一笔交易的发送者承担,后面的发送者无需支付手续费。
显然这种设定扩展性较差,因此交易组的设定原则是,整个交易组的手续费都由第一笔交易的发送者承担,后面的发送者无需支付手续费。
而平行链诞生以来,交易组的使用更为频繁:
平行链的交易虽然不在主链执行,但仍需要在主链完成打包,而这笔打包操作就需要消耗BTY作为手续费。而平行链的地址作为独立生态,显然并不一定拥有BTY,在这种情况下,更多会使用一个中心地址构造交易组,完成BTY代扣的操作,使平行链的交易无需支付手续费。
平行链的交易虽然不在主链执行,但仍需要在主链完成打包,而这笔打包操作就需要消耗BTY作为手续费。
而平行链的地址作为独立生态,显然并不一定拥有BTY,在这种情况下,更多会使用一个中心地址构造交易组,完成BTY代扣的操作,使平行链的交易无需支付手续费。
![交易组](https://gitlab.33.cn/flyaway53/test/raw/master/img-folder/11.png)
交易组是对平行链架构的一个有效的补充,当然在其他情景下的应用也十分有效。
......
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