def sign(digest): k = EOSKey('cpupayer权限私钥') # 由原来的`active`修改为`cpupayer`私钥 return k.sign(digest)
# 构造`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`提交交易请求