Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
T
test
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
JIRA
JIRA
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
谢昇
test
Commits
9c041458
Commit
9c041458
authored
May 15, 2019
by
谢昇
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update chain33.md
parent
383f48c1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
36 additions
and
18 deletions
+36
-18
chain33.md
chain33.md
+36
-18
No files found.
chain33.md
View file @
9c041458
...
@@ -30,14 +30,17 @@ chain33蝟餌葉漲嚗隞亦妍銝箸銵嚗xecutor嚗chain33
...
@@ -30,14 +30,17 @@ chain33蝟餌葉漲嚗隞亦妍銝箸銵嚗xecutor嚗chain33
**除了coins合约以外,其他合约只允许使用合约内的代币。**
**除了coins合约以外,其他合约只允许使用合约内的代币。**
coins合约被定义为基础合约,包括我们默认显示的余额,都是取的coins合约中的余额。
coins合约被定义为基础合约,包括我们默认显示的余额,都是取的coins合约中的余额。
为了合约调用的安全考虑,只允许从coins合约中主动向其他合约转账,而不允许其他合约从coins合约中取款。
为了合约调用的安全考虑,只允许从
**coins合约**
中主动向其他合约转账,而不允许其他合约从coins合约中取款。
同样以挖矿合约举例,要进行挖矿操作,需要从coins合约中主动向ticket合约转账,之后才允许ticket合约本身,对合约中的代币进行操作。我们钱包中开启自动挖矿的操作已经集成了该步操作。
同样以挖矿合约举例,要进行挖矿操作,需要从coins合约中主动向ticket合约转账,之后才允许ticket合约本身,对合约中的代币进行操作。我们钱包中开启自动挖矿的操作已经集成了该步操作。
而当想从其他合约取回代币时,也是由coins合约执行取回(withdraw)操作。
所以chain33的合约系统事实上是一个“一超多强”的格局,coins合约有最高权限,其他合约相互之间平等。
合约地址中的代币分为两部分:
**余额及冻结**
,以满足各合约的需求。
而当想从其他合约取回代币时,也是由coins合约执行取回(withdraw)操作。
所以chain33的合约系统事实上是一个“一超多强”的格局,coins合约有最高权限,其他合约相互之间平等。
合约地址中的代币分为两部分:余额及冻结,以满足各合约的需求。


## 如何理解地址和合约之间的关系
## 如何理解地址和合约之间的关系
...
@@ -45,10 +48,11 @@ coins漲鋡怠蛹蝖漲嚗賑暺恕蝷箇
...
@@ -45,10 +48,11 @@ coins漲鋡怠蛹蝖漲嚗賑暺恕蝷箇
chain33系统支持两种方式转入:
chain33系统支持两种方式转入:
1、直接指定执行器
(合约)名称转入;
**1、直接指定执行器(合
约)名称转入;**
2、直接
向指定合约地址转入。
**2、直接向指
定合约地址转入。**
对挖矿合约来说,可以使用send_exec命令,直接向ticket执行器转入;也可以使用普通的transfer命令,向16htvcBNSEA7fZhAdLJphDwQRQJaHpyHTp合约地址转入。
对挖矿合约来说,可以使用send_exec命令,直接向ticket执行器转入;
也可以使用普通的transfer命令,向16htvcBNSEA7fZhAdLJphDwQRQJaHpyHTp合约地址转入。
要理解的是,向合约地址转入代币以后,该代币实际以两种形态可以被查询:
要理解的是,向合约地址转入代币以后,该代币实际以两种形态可以被查询:
...
@@ -56,20 +60,26 @@ chain33蝟餌舅蝘撘蓮嚗
...
@@ -56,20 +60,26 @@ chain33蝟餌舅蝘撘蓮嚗
2、存在于合约地址的余额中。
2、存在于合约地址的余额中。
但对于用户来说,实际只需关心自己的合约中的余额。
但对于用户来说,实际只需关心自己的合约中的余额。
同样以挖矿合约举例,我们在主网浏览器上可以查询到16htvcBNSEA7fZhAdLJphDwQRQJaHpyHTp的余额,将余额代表当下有多少代币正在该合约中,这个值是所有其他地址转入挖矿合约的代币总和。因为合约地址不存在私钥的原则,该地址中的余额无法被私钥转出,只能以满足合约规则的方式变动。
同样以挖矿合约举例,我们在主网浏览器上可以查询到
**合约地址16htvcBNSEA7fZhAdLJphDwQRQJaHpyHTp**
的余额,这个余额代表当下有多少代币正在该合约中,这个值是所有其他地址转入挖矿合约的代币总和。
因为合约地址不存在私钥的原则,该地址中的余额无法被私钥转出,只能以满足合约规则的方式变动。


也就是说我转入其他合约的代币,依然是属于我的地址的资产,只是暂时将操作权限转移给了合约;当需要的时候,随时可以使用私钥将其取回。
也就是说我转入其他合约的代币,依然是属于我的地址的资产,只是暂时将操作权限转移给了合约;
当需要的时候,随时可以使用私钥将其取回。
在查询的时候,也可以查询到我的地址在所有合约下的余额。如图可以查询到我的地址在其他合约中的余额。
在查询的时候,也可以查询到我的地址在所有合约下的余额。如图可以查询到我的地址在其他合约中的余额。


这里可以做一个类比来更好的理解。
这里可以做一个类比来更好的理解。
```
我们把地址比做银行账户,地址就是账户名;
我们把地址比做银行账户,地址就是账户名;
coins就是活期储蓄账户,是基础账户,其他合约就是基金账户、理财账户等等;
coins就是活期储蓄账户,是基础账户,其他合约就是基金账户、理财账户等等;
转入其他合约的操作就是把钱从活期中转入了其他账户的过程,而实际上这部分钱的户名都是同一个,只是暂时属于不同的分类中。
转入其他合约的操作就是把钱从活期中转入了其他账户的过程,而实际上这部分钱的户名都是同一个,只是暂时属于不同的分类中。
也可以操作将他们从其他类账户转回活期账户,完成整个操作。
也可以操作将他们从其他类账户转回活期账户,完成整个操作。
```
## chain33合约的优势
## chain33合约的优势
从上面的介绍也可以看到,chain33合约的扩展性非常强。
从上面的介绍也可以看到,chain33合约的扩展性非常强。
...
@@ -89,21 +99,29 @@ coins撠望瘣餅揭嚗蝖韐行嚗隞漲撠望揭
...
@@ -89,21 +99,29 @@ coins撠望瘣餅揭嚗蝖韐行嚗隞漲撠望揭
# chain33系统的平行链
# chain33系统的平行链
合约系统是对chain33的纵向扩展,而平行链就是对系统的横向延伸。
合约系统是对chain33的纵向扩展,而平行链就是对系统的横向延伸。
要理解平行链的功能,我们首先需要了解一下chain33区块链传输时的一些基本信息。
要理解平行链的功能,我们首先需要了解一下chain33区块链传输时的一些基本信息。
从其他节点同步一个区块,分为下载、执行两个阶段。下载耗时主要依赖于网络环境;执行主要依赖于交易内容及本地机器性能。
当一个区块内交易数量很多或交易内容很大,执行区块的耗时会拉长,进而影响全网速度及tps。
从其他节点同步一个区块,分为
**下载、执行**
两个阶段。下载耗时主要依赖于网络环境;
**执行**
主要依赖于交易内容及本地机器性能。
而平行链的存在,是将一部分交易的执行由平行链节点完成,主链只负责打包,而不具体执行。这就等于将部分性能压力分摊在平行链节点上,从而为bityuan网络tps的提升极大地去除了限制,也为横向扩展bityuan网络增加了可能性。
当一个区块内交易数量很多或交易内容很大,执行区块的耗时会拉长,进而影响全网速度及tps。
而平行链的存在,是将一部分交易的执行由平行链节点完成,
**主链只负责打包,而不具体执行**
。
这就等于将部分性能压力分摊在平行链节点上,从而为bityuan网络tps的提升极大地去除了限制,也为横向扩展bityuan网络增加了可能性。
平行链可以作为独立的一条链使用,同时依托于跨链合约,也可以将平行链和主链结合起来,通过主链币和平行链币的跨链交换,成为一个生态。这也是之后平行链发展使用的一个方向。
平行链可以作为独立的一条链使用,同时依托于跨链合约,也可以将平行链和主链结合起来,通过主链币和平行链币的跨链交换,成为一个生态。这也是之后平行链发展使用的一个方向。
目前bityuan网络只已经有十几条平行链存在,非常有效地提升了主网的tps。之后随着平行链的扩展越来越多,相信整个网络的生态也会日益完善。
## 交易组
## 交易组
谈到平行链,就无法离开交易组(原子交易)使用。
谈到平行链,就无法离开交易组(原子交易)使用。
交易组的概念就是,将若干笔交易,目前限制数量是2-20笔,构造成一个交易组。
交易组的概念是,将若干笔交易,目前限制数量是2-20笔,构造成一个交易组。
组内交易必然打包进同一个区块,且该组交易要么全部成功,要么全部失败,组内任何一个交易执行失败都会让整个交易组的交易全部失败。
组内交易必然打包进同一个区块,且该组交易
**要么全部成功,要么全部失败**
,组内任何一个交易执行失败都会让整个交易组的交易全部失败。
在交易组出现之前,chain33全网的交易遵循一个原则:任何交易都需要支付满足消耗的BTY作为手续费。
在交易组出现之前,chain33全网的交易遵循一个原则:任何交易都需要支付满足消耗的BTY作为手续费。
显然这种设定扩展性较差,因此交易组的设定原则是,整个交易组的手续费都由第一笔交易的发送者承担,后面的发送者无需支付手续费。
显然这种设定扩展性较差,因此交易组的设定原则是,整个交易组的手续费都由第一笔交易的发送者承担,后面的发送者无需支付手续费。
而平行链诞生以来,交易组的使用更为频繁:
而平行链诞生以来,交易组的使用更为频繁:
平行链的交易虽然不在主链执行,但仍需要在主链完成打包,而这笔打包操作就需要消耗BTY作为手续费。而平行链的地址作为独立生态,显然并不一定拥有BTY,在这种情况下,更多会使用一个中心地址构造交易组,完成BTY代扣的操作,使平行链的交易无需支付手续费。
平行链的交易虽然不在主链执行,但仍需要在主链完成打包,而这笔打包操作就需要消耗BTY作为手续费。
而平行链的地址作为独立生态,显然并不一定拥有BTY,在这种情况下,更多会使用一个中心地址构造交易组,完成BTY代扣的操作,使平行链的交易无需支付手续费。


交易组是对平行链架构的一个有效的补充,当然在其他情景下的应用也十分有效。
交易组是对平行链架构的一个有效的补充,当然在其他情景下的应用也十分有效。
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment