Пример #1
0
def sign(digest):
    k = EOSKey('cpupayer权限私钥') # 由原来的`active`修改为`cpupayer`私钥
    return k.sign(digest)
Пример #2
0
# 构造`trx`(图1-1 步骤3)
# 这时的`payload`有:data、account、name和authorization
trx = {"actions": [payload[0]]}

# 对`trx`进行哈希计算(图1-1 步骤4)
chain_info, lib_info = ce.get_chain_lib_info()
trx_chain = Transaction(trx, chain_info, lib_info)
hash_trx = sig_digest(trx_chain.encode(), chain_info['chain_id'])

# 请求服务端 对`trx`哈希进行签名(图1-1 步骤5)
server_sign = SERVER.sign(hash_trx)

# 玩家自己也需要对相同数据进行签名(图1-1 步骤6)
k = EOSKey('玩家私钥')  # 玩家私钥
player_sign = k.sign(hash_trx)

# 组合签名,顺序要和`payload.authorization`的顺序一致
signatures = []
signatures.append(server_sign)  # 服务端签名放在第一个位置
signatures.append(player_sign)  # 玩家签名跟在后面

final_trx = {
    'compression': 'none',
    'transaction': trx_chain.__dict__,
    'signatures': signatures
}
data = json.dumps(final_trx, cls=EOSEncoder)

timeout = 30
# 调用区块链`push_transaction`提交交易请求