Go-Ethereum
其他節點如何知道哪個特定節點擁有交易中使用的帳戶?
簡要介紹一下我的設置。我正在使用具有 3 個節點的私有乙太坊網路。我使用以下方法使所有節點
peers
相互關聯:admin.addPeer("enode:1234abcd..")
當探勘發生時,所有節點都是同步的。
我還注意到在一個節點上創建的帳戶是同一節點的本地帳戶。因此,在一個節點上創建的帳戶在同一個節點上可用,而不是在其任何對等節點上可用。
但是,我可以使用不同節點的帳戶來處理交易。
eth.sendTransaction({from:sender, to:receiver, value: amount})
現在我的問題是:
- 網路如何知道要查詢哪個節點來查詢帳戶的存在?
- 是否檢查所有節點是否存在“發送者”和“接收者”帳戶?
- 如果將更多對等點添加到網路中,交易時間是否會增加?
- 如果我將在一個節點上創建的帳戶的密鑰文件傳輸到所有其他節點,它會影響我的網路安全嗎?
- 交易由創建簽名的私鑰簽名。給定交易數據和簽名,節點可以推導出簽名者的公共地址並可以驗證交易。“發送者”是簽名者,也就是私鑰。網路不在乎誰“擁有”該帳戶。區塊鍊是將公共地址映射到已處理的交易值的分類賬,交易來自何處並不重要。它只是通過將簽名簽名者與發件人進行比較來檢查簽名者是否合法公共地址。我當然簡化了很多,但關鍵是網路不關心哪個節點擁有私鑰。你可以從一個節點,或離線,或從冥王星簽署交易,然後將簽署的交易交給不同的節點進行廣播,它就會工作。
- 不,不檢查節點是否存在帳戶。
- 沒有基於區塊難度的交易時間,這是一個礦工或礦工池需要多長時間來探勘一個區塊,估計總是在 15 秒左右。但是,如果有更多的交易,網路可能會變得擁擠,然後它可以處理,我的意思是有多少交易可以容納在一個塊中,所以如果有太多的交易,那麼很多交易會在周圍徘徊等待提取和探勘的交易池(稱為記憶體池)(包含在一個塊中)。
- 只要密鑰庫文件通過 TLS 加密和傳輸,就可以安全地傳輸它們。