Contract-Invocation

在 Python 腳本中呼叫智能合約函式

  • November 2, 2019

我的情況與大多數情況相反。我在 Solidity 編碼方面相對有經驗,但絕對沒有使用 Python 的經驗。

我最想做的是有一個腳本,它會在預定的時間間隔內呼叫智能合約函式並為其提供所需的輸入,然後讀取並可能儲存輸出。

我需要幫助弄清楚“呼叫函式”部分。請不要只將我指向 web3.py,我查看了它,雖然它看起來非常有用,但我不知道從哪裡開始,我現在沒有時間從頂部獲取它。如果您可以針對我的要求提供一些幫助,請提供。

謝謝你。

這是一個使用Brownie的範例,應該會有所幫助:

import time
from brownie import Contract, network, web3


abi = {}          # contract ABI as a dict
address = "0x00"  # contract address as a string


network.connect('mainnet')
my_contract = Contract("MyContractName", address, abi=abi)

height = web3.eth.blockNumber

while True:
   result = my_contract.myCallableFn(arg1, arg2) # change to call the desired method
   if result == desired_result:
       # do whatever you need to do

   while web3.eth.blockNumber == height:
       time.sleep(1)
   height = web3.eth.blockNumber

您將不得不修改一些配置設置以指向您自己的節點,或者在您的環境變數中設置一個 infura API 密鑰。

如果我的範例不清楚,有關訪問契約方法的文件也可能很有用。

希望這可以幫助。

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