在之前的文章每天进步一点点:批量claim_account (claim discounted account)中,我们介绍了使用RC申领打折账户的操作,这个操作相当于申领到一张入场券,实际创建账户时则使用create_claimed_account
。
(图源 :pixabay)
create_claimed_account
使用的结构体如下,一看就相当复杂了:
账户权限
之所以复杂,是因为创建账户的同时,要为账户设置对应的权限(owener
、active
、posting
、memo_key
),前三者是比较复杂的类型,memo_key则可以当作字符串处理。
1 | {'active': { |
以最简单的active权限为例,weight_threshold
代表多签的阈值,account_auths
代表添加的授权账户,key_auths
代表添加的授权公钥。
无论是授权账户还是授权公钥都是列表,就是说可以添加多组,以单组授权的公钥为例,类似这样:
['STM798n7jMPF4JM8D7dj4g1M2GiG8Dx79vbYWfuJCJkSTxXCvrosF', 1]
前者代表被授权的公钥,后者代表阈值。
创建claimed账户
知道了账户权限的相关内容后,剩下的就应该很简单了,我们创建类似如下的模板:
1 | op = ['create_claimed_account',{ |
并创建类似如下的权限类型:
1 | auth = { |
为每个权限设置初值并赋值到OP中,然后将交易追加到transaction中,签名交易并广播:
trx.append_op(op)
trx.sign_digest(wif)
trx.broadcast()
被广播出去的内容大概长成这个样子:
广播成功并且不出问题后,区块链上就会创建成功我们的账户:
其它
我在尝试创建@oflyhigh.account后,又尝试创建@oflyhigh.accounts,可是却给我如下错误提示:
‘could not insert object, most likely a uniqueness constraint was ‘
‘violated:could not insert object, most likely a uniqueness constraint was ‘
‘violated: ‘
这种报错一半是因为有同名账户存在,所以不允许再被创建,然而我查了,并没有同名账户啊。找来找去才发现,账户长度被限定为16个字符,oflyhigh.accounts
尽管广播出去是oflyhigh.accounts
但是到链端被截短为oflyhigh.account
就和之前创建的账户重复了。
为了证实这点,我用了26个字母来创建账户,广播出去的内容如下:
创建的账户如下:
可见成功的被截短了,不过尽管如此,我还是拥有了最长的字母序账户@abcdefghijklmnop,有人出高价收购不?哈哈哈哈。
This page is synchronized from the post: ‘每天进步一点点:create_claimed_account’