Blockchain
如何在乙太坊區塊鏈/交易中儲存價值(字元串或十六進制)?
我一直在瀏覽各種教程(其中許多已過時或連結斷開),以了解如何在 ETH 區塊鏈中儲存和檢索簡單的字元串或十六進制值。出於我的目的(以及我正在開發的預期應用程序),最好能夠通過 Python 與區塊鏈互動。
我曾嘗試使用 web3 和 pyethereum,但沒有取得多大成功。我得到的最遠的是使用 web3 界面的以下程式碼。
我遺漏了哪些部分,如何正確儲存和檢索 ETH 區塊鏈上的值?
如何創建契約並從中儲存/檢索價值?
def eth_black_magic(hex_value): web3 = Web3(HTTPProvider('http://localhost:8545')) # what URL should I point at? user1 = 'xxx' # what goes here? user2 = 'xxx' # what goes here? transaction = {'from': user2, 'to':user1, 'data': hex_value} transaction_hash = web3.eth.sendTransaction(transaction)
一般方法可能如下所示:
- 創建一個有變數的契約,比如說
uint public val
- 在契約上添加一個設置該變數的方法,比如
setVal(uint)
- 生成合約 ABI
- 初始化
Web3(...)
,連接到您的客戶端- 使用原始碼創建合約對象
- 部署合約
contract.deploy()
- 使用 ABI 和部署地址在 web3 中創建一個 Contract 對象
remix
可能是第 1-3 步的不錯選擇。您可以web3.py
用於步驟 4-7。所有單獨的步驟都應該有文件和教程。現在,你們都設置好了已部署的契約。您可以
val
使用以下命令在 python 中獲取和設置:
- 設置變數
contract.transact().setVal(1337)
- 獲取變數
contract.call().val()