【问题标题】:Visibility of variables from different consoles in Ethereum以太坊中不同控制台变量的可见性
【发布时间】:2017-06-22 11:25:56
【问题描述】:

我是以太坊的新手。 我正在尝试使用 Azure 的集群开发合同(我有试用帐户)。 我使用 geth 从 Azure 中的机器连接到我的网络:

gethadmin@XXXXXX-tx0:~$ 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:\Users\boris>

eth.accounts [ “0xab14c61930343149c2f54044054cd46b90c0dee6”, “0x7cc276b28bfdbb57151ed3b5552aafb2f2592964”, “0xc9b8b9d57219b2c0935d8c28d4d2247fe70232f3”, “0x2aed463fd54aa41fed898a9629bee6f0935b74fb”] P>

发件人 - gethadmin@XXXXXX-tx0

eth.accounts [ “0xab14c61930343149c2f54044054cd46b90c0dee6”, “0x7cc276b28bfdbb57151ed3b5552aafb2f2592964”, “0xc9b8b9d57219b2c0935d8c28d4d2247fe70232f3”, “0x2aed463fd54aa41fed898a9629bee6f0935b74fb”] P>

两个控制台上的命令 admin.peers 给了我相同的结果 所以,它们是相同的网络。

也许我不明白它应该如何工作,但我怀疑,如果我在同一个网络中定义变量,它必须从所有控制台都可见。是不是? 合同的情况相同。我在第一个控制台编译了合约并且可以使用它,但是从另一个控制台无法访问它。

请您解释一下为什么会发生这种情况或给我适当的链接以获得有关此问题的答案。 非常感谢

【问题讨论】:

    标签: azure ethereum solidity smartcontracts


    【解决方案1】:

    您要实例化的变量是控制台中的局部变量。 每次连接时,都会在本地创建一个暴露了 web3 API 的新 JavaScript Console,它会包装以太坊函数调用,以便您可以在 JS 中使用它们,而不必编写原始调用。

    要在网络上持久保存数据,您需要使用storage 部署合约。然后,您可以从合约存储中获取数据,而无需使用 getStorageAtcall 和您的公共变量的签名执行交易。但是,您需要执行调用合约函数的事务(类似于上面的solidity 文档中的示例)以更新存储在合约中的数据。

    【讨论】:

      猜你喜欢
      • 2011-01-24
      • 1970-01-01
      • 1970-01-01
      • 2020-12-21
      • 2016-02-28
      • 1970-01-01
      • 2022-06-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多