-
Notifications
You must be signed in to change notification settings - Fork 257
CIP001
33cn edited this page Dec 6, 2018
·
4 revisions
// Account 的信息
message Account {
// coins标识,目前只有0 一个值
int32 currency = 1;
//账户可用余额
int64 balance = 2;
//账户冻结余额
int64 frozen = 3;
//账户的地址
string addr = 4;
}
currency = 0 表示可切分资产,后面可能会引入不可切分的资产。
在一个合约中,资产有三种操作
//资产控制权转移给合约
message AssetsTransferToExec {
string cointoken = 1;
int64 amount = 2;
bytes note = 3;
string execName = 4;
string to = 5;
}
//从合约中转回资产控制权
message AssetsWithdraw {
string cointoken = 1;
int64 amount = 2;
bytes note = 3;
string execName = 4;
string to = 5;
}
//资产在合约内部转移
message AssetsTransfer {
string cointoken = 1;
int64 amount = 2;
bytes note = 3;
string to = 4;
}
资产控制权给合约后,合约可以任意控制资产,主要是要支持下面几种操作:
//冻结资产
ExecFrozen
//解冻资产
ExecActive
//给账户减少活动资产
ExecWithraw
//给账户增加活动资产
ExecDeposit
//这个可以通过 ExecDeposit 和 ExecWithraw 组合出来,但是因为比较常见,我们也作为一个操作
ExecTransfer
chain33 整个系统的状态是基于 KV 设计的,所以,资产作为一种重要的状态,有特定的Key-Value 值。
比如 BTY 在 coins 合约中, TEST 在token 合约中
//eg: mavl-coins-BTY-14KEKbYtKKQm4wMthSK9J4La4nAiidGozt , mavl-token-TEST-14KEKbYtKKQm4wMthSK9J4La4nAiidGozt
key=mavl-execer-symbol-addr
value=protobuffer encode Account
比如 coins 合约中的 BTY 转移到了 token 合约中
//eg: mavl-coins-BTY-exec-16htvcBNSEA7fZhAdLJphDwQRQJaHpyHTp:14KEKbYtKKQm4wMthSK9J4La4nAiidGozt
key=mavl-execer-symbol-exec-ExecAddress(token):addr
value=protobuffer encode Account
hello world