Blockchain

如何在乙太坊區塊鏈/交易中儲存價值(字元串或十六進制)?

  • August 30, 2017

我一直在瀏覽各種教程(其中許多已過時或連結斷開),以了解如何在 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)

一般方法可能如下所示:

  1. 創建一個有變數的契約,比如說uint public val
  2. 在契約上添加一個設置該變數的方法,比如setVal(uint)
  3. 生成合約 ABI
  4. 初始化Web3(...),連接到您的客戶端
  5. 使用原始碼創建合約對象
  6. 部署合約contract.deploy()
  7. 使用 ABI 和部署地址在 web3 中創建一個 Contract 對象

remix可能是第 1-3 步的不錯選擇。您可以web3.py用於步驟 4-7。所有單獨的步驟都應該有文件和教程。

現在,你們都設置好了已部署的契約。您可以val使用以下命令在 python 中獲取和設置:

  • 設置變數contract.transact().setVal(1337)
  • 獲取變數contract.call().val()

引用自:https://ethereum.stackexchange.com/questions/25372