Commit ddc2b470 authored by 谢昇's avatar 谢昇

Update chain33.md

parent 1d100683
...@@ -19,8 +19,9 @@ chain33系统中的合约,也可以称为执行器(executor),是chain33 ...@@ -19,8 +19,9 @@ chain33系统中的合约,也可以称为执行器(executor),是chain33
1.合约名(执行器名称): ticket 1.合约名(执行器名称): ticket
2.合约地址:16htvcBNSEA7fZhAdLJphDwQRQJaHpyHTp 2.合约地址:16htvcBNSEA7fZhAdLJphDwQRQJaHpyHTp
每个合约拥有一个唯一的合约地址,这个合约地址不存在私钥;对于任何一个已知的合约名,都可以在chain33中查询该合约的合约地址。 每个合约拥有一个唯一的合约地址,该地址从合约创造出来开始就被固定并唯一,这个合约地址不存在私钥;对于任何一个已知的合约名,都可以在chain33中查询该合约的合约地址。
![查询合约地址](https://gitlab.33.cn/flyaway53/test/raw/master/img-folder/8.png) ![查询合约地址](https://gitlab.33.cn/flyaway53/test/raw/master/img-folder/8.png)
## chain33合约的使用 ## chain33合约的使用
对于chain33合约,有一个最大的原则: 对于chain33合约,有一个最大的原则:
**除了coins合约以外,其他合约只允许使用合约内的代币。** **除了coins合约以外,其他合约只允许使用合约内的代币。**
...@@ -29,3 +30,18 @@ coins合约被定义为基础合约,包括我们默认显示的余额,都是 ...@@ -29,3 +30,18 @@ coins合约被定义为基础合约,包括我们默认显示的余额,都是
同样以挖矿合约举例,要进行挖矿操作,需要从coins合约中主动向ticket合约转账,之后才允许ticket合约本身,对合约中的代币进行操作。我们钱包中开启自动挖矿的操作已经集成了该步操作。 同样以挖矿合约举例,要进行挖矿操作,需要从coins合约中主动向ticket合约转账,之后才允许ticket合约本身,对合约中的代币进行操作。我们钱包中开启自动挖矿的操作已经集成了该步操作。
而当想从其他合约取回代币时,也是由coins合约执行取回(withdraw)操作。所以chain33的合约系统事实上是一个“一超多强”的格局,coins合约有最高权限,其他合约相互之间平等。 而当想从其他合约取回代币时,也是由coins合约执行取回(withdraw)操作。所以chain33的合约系统事实上是一个“一超多强”的格局,coins合约有最高权限,其他合约相互之间平等。
## 如何理解地址和合约之间的关系
前面提到,合约只能操作自己合约中的代币,那么我们需要使用合约的功能的话,必须首先将代币转入该合约。
chain33系统支持两种方式转入:
1、直接指定执行器(合约)名称转入;
2、直接向指定合约地址转入。
对挖矿合约来说,可以使用send_exec命令,直接向ticket执行器转入;也可以使用普通的transfer命令,向16htvcBNSEA7fZhAdLJphDwQRQJaHpyHTp合约地址转入。
要理解的是,向合约地址转入代币以后,该代币实际以两种形态可以被查询:
1、存在于用户的合约中;
2、存在于合约地址的余额中。
但对于用户来说,实际只需关心自己的合约中的余额。
同样以挖矿合约举例,我们在主网浏览器上可以查询到16htvcBNSEA7fZhAdLJphDwQRQJaHpyHTp的余额,将余额代表当下有多少代币正在该合约中,这个值是所有其他地址转入挖矿合约的代币总和。因为合约地址不存在私钥的原则,该地址中的余额无法被私钥转出,只能以满足合约规则的方式变动。
![合约余额](https://gitlab.33.cn/flyaway53/test/raw/master/img-folder/9.png)
\ No newline at end of file
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