in STEEM CN/中文4 years ago (edited)

steem使用的是分级授权,因此一个steem账号,具有4个密码:"owner", "active", "posting", "memo".





    "nodes": [
    "steems": {
        "steemaccount": {


# -*- coding: UTF-8 -*-

# 用消耗RC领取的pending claimed accounts,创建 steem 新号
# Export the key of the specified account from the local Wallet
# python creator account

import sys
import getopt
import time
import json
# from beem import Steem
from beem.account import Account
from beem.instance import shared_steem_instance
from beemgraphenebase.account import BrainKey, PasswordKey

# 必须有创建者 creator 和新号 account
    creator = sys.argv[1]
    account = sys.argv[2]
except Exception as e:
print('creator:', creator)
print('account:', account)

stm = shared_steem_instance()
# 解锁本地钱包(操作钱包时,需要解锁,否则不用)
# 输入本地钱包密码或在代码中直接赋值
# Enter the local wallet password or set value directly in the code
password = ''  # 'walletkey'
if not password:
    password = input('local wallet password : ')

# 本地存储 steem 账号信息的文件
accounts_file = '/bots.json'

    # 创建者账号
    creatorA = Account(creator, steem_instance=stm)
    accountA = Account(account, steem_instance=stm)
except Exception as e:
    print('account can be created:', account)

# 生成一套新密码
bk = BrainKey()
brainkey = bk.get_brainkey()
print('brain key:', str(brainkey))
prikey = str(bk.get_private())
print('private key:', str(prikey))
pubkey = format(bk.get_public(), "STM")
print('public key:', str(pubkey))

# 创建新号:本地存储 owner(默认不存储)
tx = stm.create_claimed_account(
    account, creator=creatorA, password=prikey, store_owner_key=True)
print('create_claimed_account:', json.dumps(tx, indent=4))

# 获取整套密钥
posting_key = PasswordKey(account, prikey, role="posting", prefix=stm.prefix)
active_key = PasswordKey(account, prikey, role="active", prefix=stm.prefix)
memo_key = PasswordKey(account, prikey, role="memo", prefix=stm.prefix)
owner_key = PasswordKey(account, prikey, role="owner", prefix=stm.prefix)
# 提取整套密钥中的公钥
# active_pubkey = active_key.get_public_key()
# owner_pubkey = owner_key.get_public_key()
# posting_pubkey = posting_key.get_public_key()
memo_pubkey = memo_key.get_public_key()
# 提取整套密钥中的私钥
active_privkey = active_key.get_private_key()
posting_privkey = posting_key.get_private_key()
owner_privkey = owner_key.get_private_key()
memo_privkey = memo_key.get_private_key()

print('posting_privkey:', str(posting_privkey))
print('active_privkey:', str(active_privkey))
print('owner_privkey:', str(owner_privkey))
print('memo_privkey:', str(memo_privkey))

with open(accounts_file, 'r', encoding='utf-8') as f:
    # 直接用load()传入文件对象,将文件中字符串内容转为json字典
    accounts_dict = json.load(f)
    # print('old.accounts_dict:', accounts_dict)
    accounts_dict['steems'][account] = {
        "name": account,  # steem 账号名称
        "email": "sample@,pwd",  # steem 注册 email
        "mobile": "sample9,from",  # steem 注册 手机号
        "keys": {
            "brain": brainkey,  # steem 账号的脑密码
            "private": prikey,  # steem 账号当前的私钥
            "public": pubkey,  # steem 账号当前的公钥
            "history": [   # steem 账号的私钥的修改记录
            "posting": str(posting_privkey),  # steem 账号的 posting 私钥
            "active": str(active_privkey),  # steem 账号的 active 私钥
            "owner": str(owner_privkey),  # steem 账号的 owner 私钥
            "memo": str(memo_privkey),  # steem 账号的 memo 私钥,用于解密memo
            "memo_key": str(memo_pubkey)  # steem 账号的 memo 公钥,用于加密memo
with open(accounts_file, 'w', encoding='utf-8') as f:
    # 用dump()传入字典和文件对象,将json字典转为字符串,存入文件
    json.dump(accounts_dict, f, indent=4, ensure_ascii=False)

执行程序:python create_claimed_account_beem dappcoder newaccddd


Congratulations @dappcoder! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :

You published more than 30 posts. Your next target is to reach 40 posts.

You can view your badges on your Steem Board and compare to others on the Steem Ranking
If you no longer want to receive notifications, reply to this comment with the word STOP

To support your work, I also upvoted your post!

Do not miss the last post from @steemitboard:

Valentine's day challenge - Give a badge to your beloved!
Vote for @Steemitboard as a witness to get one more award and increased upvotes!

Your post has been boosted with ESTM. Keep up the good work!
Dear reader, Install Android, iOS Mobile app or Windows, Mac, Linux Surfer app!
Learn more:
Join our discord:

 4 years ago  Reveal Comment