2017-06-22 34 views
0

我是新來的以太坊。 我正在嘗試使用Azure集羣開發合同(我有試用帳戶)。 我連在Azure中使用GETH到我的網絡從機:Etherium中不同控制檯變量的可見性

[email protected]:~$ geth attach http://ether2ore.eastus.cloudapp.azure.com:8545 

然後我初始化變量

>var test_var = 555 
undefined 
>test_var 
555 

這是 - 確定。

但是,當我試圖從我的筆記本電腦連接到相同點:

C:\Users\boris>geth attach http://ether2ore.eastus.cloudapp.azure.com:8545 

我試圖檢查這個變量:

> test_var 
ReferenceError: 'test_var' is not defined 
at <anonymous>:1:1 

我看到它沒有定義。

在這兩個控制檯我看到相同的帳戶:

從 - C:\用戶\鮑里斯>

eth.accounts [ 「0xab14c61930343149c2f54044054cd46b90c0dee6」, 「0x7cc276b28bfdbb57151ed3b5552aafb2f2592964」, 「0xc9b8b9d57219b2c0935d8c28d4d2247fe70232f3」,「 0x2aed463fd54aa41fed898a9629bee6f0935b74fb「]

從 - gethadmin @ XXXXXX-TX0

eth.accounts [ 「0xab14c61930343149c2f54044054cd46b90c0dee6」, 「0x7cc276b28bfdbb57151ed3b5552aafb2f2592964」, 「0xc9b8b9d57219b2c0935d8c28d4d2247fe70232f3」, 「0x2aed463fd54aa41fed898a9629bee6f0935b74fb」]

命令admin.peers在兩個控制檯給了我同樣的結果 所以,它是相同的網絡。

也許我不明白它應該如何工作,但我懷疑,如果我在同一個網絡中定義變量,它必須在所有控制檯中都可見。是不是? 與合同相同的情況。我在第一個控制檯編譯合同並可以使用它,但是無法從另一個控制檯訪問。

請你能解釋一下爲什麼會出現這種情況,或者給我正確的鏈接以獲得關於這個問題的答案。 非常感謝

回答

0

您正在實例化的變量是控制檯內的局部變量。 每次連接時,將在本地創建一個新的帶有暴露的web3 API的JavaScript Console,它包裝了ethereum函數調用,以便您可以在JS中使用它們,而不必編寫原始調用。

要堅持網絡上的數據,您需要與storage部署合同。然後,您可以從合同存儲中獲取數據,而無需使用getStorageAtcall以及您的公共變量的簽名執行交易。但是,您需要執行一個調用合同函數的交易(類似於上面的可靠性文檔中的示例),以更新存儲在合同中的數據。