Web3.py
如何在我的應用中自動更新最新的區塊號和待處理的 txns?
我希望使用 KivyMD 製作一個簡單的應用程序。我想在乙太坊區塊鏈上顯示最新的區塊和待處理的 txns,並讓它隨著每個新區塊自動更新。我正在使用 infura url 和 web3.py。
pending_block = web3.eth.getBlock(block_identifier='pending', full_transactions=True) pending_transactions = pending_block['transactions']
每次產生新塊時,我該怎麼做才能使應用程序自動獲取此資訊?聽眾?網路套接字?或者使用一個休眠指定時間並呼叫函式來獲取最新數據的while循環?
你需要監聽區塊鏈事件。來自 Web3js文件:
var subscription = web3.eth.subscribe('newBlockHeaders', function(error, result){ if (!error) { console.log(result); return; } console.error(error); }) .on("connected", function(subscriptionId){ console.log(subscriptionId); }) .on("data", function(blockHeader){ console.log(blockHeader); }) .on("error", console.error); // unsubscribes the subscription subscription.unsubscribe(function(error, success){ if (success) { console.log('Successfully unsubscribed!'); } });
也許這段程式碼可以幫助你。它包含遞歸函式。
def checkBlockNumber(blockNumber = None): if blockNumber: if blockNumber == w3.eth.get_block_number(): time.sleep(1) checkBlockNumber(blockNumber) else: return w3.eth.get_block_number() while True: block_number = checkBlockNumber() print(block_number) checkBlockNumber(block_number)