在为DDEX api签名时有问题.我正试图在python中完成这个任务,由于某种原因,我的签名被两个字符删除了。下面是我在文档中使用私钥和UTC时间戳的代码。
import web3
from eth_keys import keys
from web3.auto import w3
from eth_utils import decode_hex
from eth_account.messages import encode_defunct
private_key_0 = "0xe4abcbf75d38cf61c4fde0ade1148f90376616f5233b7c1fef2a78c5992a9a50"
# Testing the Auth function...
epoch_time = "1524088776656"
message = "HYDRO-AUTHENTICATION@1524088776656"
message_bytes = ''.join(hex(ord(c)) for c in message)
message_hex = b'{message_bytes}'.hex()
priv_key_bytes = decode_hex(private_key_0)
priv_key = keys.PrivateKey(priv_key_bytes)
pub_key = priv_key.public_key
public_address_0 = pub_key.to_checksum_address()
print("PUBLIC KEY: " + public_address_0)
print("PRIVATE KEY: " +private_key_0)
# print("Message hex: " +message_hex)
msg = encode_defunct(text=message.rstrip())
signed_message = w3.eth.account.sign_message(msg,private_key=private_key_0)
print("SIGNED MESSAGE")
print(signed_message)
sig = signed_message['signature']
# test should be:
# 0x603efd7241bfb6c61f4330facee0f7027d98e030ef241ad03a372638c317859a50620dacee177b771ce05812770a637c4c7395da0042c94250f86fb52472f93500
# but is:
# 0x603efd7241bfb6c61f4330facee0f7027d98e030ef241ad03a372638c317859a50620dacee177b771ce05812770a637c4c7395da0042c94250f86fb52472f9351b
test = str(sig.hex())
header = str(public_address_0) + "#" + message + "#" + test
print(header)我之所以来到这里,是因为我在尝试使用自己的私钥时,从DDEX中得到了一个“未经授权”的错误。我想这和签名函数有关,但我想不出.有什么想法吗?
发布于 2019-09-25 02:16:32
Ethereum期望签名(最后一个字节)的v组件为27或28,而不是0或1。您只需在最后一个字节中添加27 (0x1b)即可。
https://ethereum.stackexchange.com/questions/76223
复制相似问题