Transactions

如何主動衡量mempool?

  • May 26, 2017

出於研究目的,我想將交易發送到比特幣網路並測量它們何時收到(是的,我知道現有的網站有關於這些平均值的統計數據,但他們無法為我提供更詳細的統計數據)。

具體來說,我想:

  1. 通過應該具有不同出站鄰居的多個節點發送交易(我不希望我的所有交易都通過相同的鄰居進行隧道傳輸)。
  2. 在我控制的其他節點接收交易(用於測量),但我想避免讓這些節點首先驗證整個區塊鏈。
  3. 避免意外的垃圾郵件攻擊。

我應該使用全節點、半節點還是其他什麼?是否有一個有據可查且易於閱讀的實現,我可能會發現它對我的目的有用(C++ 通常不是我的首選工具)?任何形式的建議都將受到高度讚賞。

如果我沒記錯的話,這應該不會導致垃圾郵件攻擊,因為交易將全部來自新創建的硬幣(如果這是正確的術語)並且應該優先於幾乎所有真實交易,但如果我得到這個,請糾正我錯誤的。

PS請假設我是個白痴,所以請拼出諸如“哦,請使用RPC”之類的內容…謝謝!

您應該在發送端和接收端都使用完整節點

發送 Tx

  • 使用*-connect* 選項通過選定的鄰居廣播您的 tx。使用<https://bitnodes.21.co/>查找鄰居。使用 bitcoind 中的錢包命令並將交易發送到您自己錢包中的地址

接收 Tx

  • 在 bitcoind 中使用*-walletnotify選項來獲取傳入錢包交易的通知。我認為在不先驗證區塊鏈的情況下接收 mempool tx 並不容易。無論如何,這是一次努力,一旦你在一個節點上同步了它,你就可以輕鬆地將整個.bitcoin*目錄複製到其他節點。

關於語言,您根本不需要使用 C++。要發送 tx,您需要進行RPC 呼叫。這可以使用 bash 命令輕鬆完成,或者您可以在 python中使用https://github.com/jgarzik/python-bitcoinrpc 。對於接收,通知腳本可以是任何語言 php/python,它只會獲取您的 tx id 作為參數,然後您可以做任何您想做的事情。

不用擔心垃圾郵件。除非你有很多比特幣可以浪費在交易費上,否則很難向網路發送垃圾郵件。只要確保您投入了足夠的交易費用,以便通過網路進行中繼。對於您的實驗,您實際上可以嘗試使用不同的 tx 費用來觀察通過網路的傳播時間。

讓我知道你的研究何時結束。很想看看結果:D

引用自:https://bitcoin.stackexchange.com/questions/53784