跳至主要內容
本頁面使用機器翻譯自英語,可能包含錯誤或不清楚的語言。如需最準確的信息,請參閱英文原文。由於更新頻繁,部分內容可能與英文原文有出入。請加入我們在 Crowdin 上的努力,幫助我們改進本頁面的翻譯。 (Crowdin translation page, Contributing guide)

公共賬戶密鑰

AccountKeyPublic 用於有一個公鑰的賬戶。 如果賬戶有一個 AccountKeyPublic 對象,交易驗證過程如下:

eth_utilsweb3eth_account 中導入必要的實用程序

web3py_ext導入extend,將 web3 擴展為 kaia web3

使用 Web3.HTTPProvider 和 RPC 端點定義 web3 連接

此外,您還可以將提供商 URL 從 kairos 更改為 quicknode

使用Account.from_key_pair從私人密鑰定義錢包,該密鑰是多重簽名賬戶的成員密鑰

定義要簽署的任何信息

使用encode_defunct對報文進行格式化,使其與 EIP-191 標準兼容。

使用創建的賬戶簽署交易

打印簽名及其長度

使用Account.rec recover_message從簽名郵件中恢復發件人地址

web3_public_value_transfer_message_recover.py

from eth_account import Account
from web3 import Web3
from eth_account.messages import encode_defunct
from eth_utils.curried import to_hex
from web3py_ext import extend
w3 = Web3(Web3.HTTPProvider('https://public-en-kairos.node.kaia.io'))
def web3_public_value_transfer_message_recover():
user = Account.from_key_pair(
'0xe15cd70a41dfb05e7214004d7d054801b2a2f06b',
'0x0e4ca6d38096ad99324de0dde108587e5d7c600165ae4cd6c2462c597458c2b8'
)
message = to_hex(text="I♥KLAYTN")
msghash = encode_defunct(hexstr=message)
signature = Account.sign_message(msghash, user.key)
print(signature.signature.hex())
print(len(signature.signature.hex()))
recovered = w3.klay.recover_from_message(user.address, message, signature.signature.hex(), "latest")
print("\nsender", user.address, "\nrecovered", recovered)
web3_public_value_transfer_message_recover()

output

❯ python web3_public_value_transfer_message_recover.py
0x875445e2197ec28e913a1775a40ca8c5a0a9e1806c72e08e01a54caf2b65640d09ff852643df23277c46469ef7f5e84ed96c5553b6ad648a4255a0c5dca58bdc1c
132
sender 0xe15Cd70A41dfb05e7214004d7D054801b2a2f06b
recovered 0xa2a8854b1802d8cd5de631e690817c253d6a9153

讓這個頁面變得更好