标签: ethereum

如何在结构中初始化数组

我有一个结构购买,其中我正在进行一系列付款.但是,当我尝试在我的makePayment方法中添加新的payment数组时,我从solidity编译器返回错误:"内部编译器错误:将类型struct Payment memory []内存复制到尚不支持的存储." 当我将mayment数组更改为storage或时memory,我得到相同的错误.我在下面添加了相关代码.

有可能做我想做的事情吗?我没有看到任何明确说明它在文档中不可能但我也没有看到任何示例正在做我正在尝试做的事情.:|

  struct Payment {
    address maker;
    uint amount;
  }

  struct Purchase {
    uint product_id;
    bool complete;
    Payment[] payments;
  }
  Purchase[] purchases;

  function makePayment(uint product_id, uint amt, uint purchase_id) returns (bool) {

      Payment[] payments;
      payments[0] = Payment(address, amt);
      purchases[purchase_id] = Purchase(product_id, false, payments);
  }
Run Code Online (Sandbox Code Playgroud)

arrays struct ethereum solidity

9
推荐指数
1
解决办法
5079
查看次数

我可以使用Ruby on Rails或Node.js而不是Ethereum + Geth创建本地区块链吗?

问题:

有没有人知道一个稳定的框架,可用于创建区块链应用程序,创建服务器/节点,创建矿工,钱包,区块链检查器等?

这样的框架并没有一定要在Node.js的,也不Ruby on Rails的,但就是这两种技术,我最熟悉的.

一些背景:

我必须制作一个基于区块链技术的实习项目.

我一直在看以太坊这看起来不错.以太坊的GETH命令行界面允许我创建区块链并挖掘区块链.

但是,我需要能够使用支持Web的开发平台,例如Ruby on Rails,Node.js或类似的,这样我就可以让实习生设计一个UI来配合本地区块链.

我看过Toshi(RoR)和BitCoin.js(Node),但需要更好的文档.

感谢您提出的所有建议!

ruby-on-rails node.js blockchain ethereum

9
推荐指数
1
解决办法
2861
查看次数

区块链是一个分散的数据库吗?

我理解比特币使用区块链技术来维护所有交易的分散分类账.我还阅读了许多帖子,暗指未来区块链技术的应用,我都不清楚这一点.

区块链技术只是一个分散的数据库,对数据进行了共识验证吗?如果是这种情况,数据库肯定会变得太大而无法有效地分散?

为了帮助我理解,有人能指出一个非比特币区块链应用程序的明确例子吗?

提前致谢.

bitcoin blockchain ethereum hyperledger corda

9
推荐指数
1
解决办法
1617
查看次数

Parity的Aura共识协议如何运作?

是一个只有公式的高级描述.我想知道它是如何工作的.

我真的不明白一步是什么,它有什么用?节点是否始终不断更新步骤?当创建创建和广播块的时间到来时,它将采用当前步长值并检查他是否应该广播.

你是什​​么意思"拒绝超过一步的阻止."?这是否意味着如果阻塞时间是5秒,那么下一个块时间戳应该正好高5秒.

还有当下一个小学不播出时会发生什么?网络如何处理它?所有下一个块都应该无效,因为它们不会遵循5秒的时间戳差异.

consensus ethereum parity-io

9
推荐指数
1
解决办法
1242
查看次数

以太坊Web3.js返回"无法找到模块'web3-requestManager'"

我正在尝试在macosx上开始使用带有节点6.11.1的Ethereum Web3.js

我使用以下命令安装了web3:

npm安装web3

然后我启动这个 - 显然 - 简单的节点命令:

Web3 = require('web3');

好吧,它返回以下错误:

module.js:471
    throw err;
    ^

Error: Cannot find module 'web3-requestManager'
    at Function.Module._resolveFilename (module.js:469:15)
    at Function.Module._load (module.js:417:25)
    at Module.require (module.js:497:17)
    at require (internal/module.js:20:19)
    at Object.<anonymous> (/Users/fremente/Dropbox/Influx Design/Web htdocs/ethereum/node_modules/web3/packages/web3-core/src/index.js:26:22)
    at Module._compile (module.js:570:32)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)
    at Function.Module._load (module.js:438:3)
Run Code Online (Sandbox Code Playgroud)

看起来它需要一些未随包安装的模块(例如'web3-requestManager').

这是我的package.json

{
  "name": "ethereum",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "dependencies": {
    "ethereumjs-testrpc": "^4.0.1",
    "solc": "^0.4.13",
    "web3": "^1.0.0-beta2"
  },
  "devDependencies": {},
  "scripts": {
    "test": "echo …
Run Code Online (Sandbox Code Playgroud)

javascript node.js ethereum web3js

9
推荐指数
2
解决办法
6263
查看次数

私有以太坊区块链的数据在几天后丢失/消失

我正在Azure上的虚拟机上部署私有以太坊区块链(geth).在区块链上部署我的Solidity合同并启动我的NodeJS应用程序后,我能够通过nodejs Loopback App的web apis正常添加数据,一切正常,我可以使用GET apis查看添加的数据.

然而,在1-2-3天(随机)后,我无法检索通过我的GET apis添加的数据,而我仍然能够添加新数据,确认Geth正常运行并且没有中断.

我正在运行geth使用:

geth --datadir ./myDataDir --rpc --networkid 1441 console 2>> myEth.log
Run Code Online (Sandbox Code Playgroud)

myEth.log没有显示任何错误,nodejs日志也是干净的.

eth.syncing显示false哪个网络已同步.

myDataDir文件夹的大小仍然在增加,所以逻辑上数据应该在某处,但它没有显示.

blockchain ethereum solidity smartcontracts go-ethereum

9
推荐指数
1
解决办法
217
查看次数

web3 websocket连接可防止节点进程退出

我有一个节点js进程,它创建一个web3 websocket连接,如下所示:

web3 = new Web3('ws://localhost:7545')
Run Code Online (Sandbox Code Playgroud)

当进程完成时(我发送一个SIGTERM),它不会退出,而是永远挂起而没有控制台输出.

我注册了SIGINT和SIGTERM一个听众在什么处理过程中具有突出以观察process._getActiveRequests()process._getActiveHandles(),我看到以下内容:

 Socket {
    connecting: false,
    _hadError: false,
    _handle: 
     TCP {
       reading: true,
       owner: [Circular],
       onread: [Function: onread],
       onconnection: null,
       writeQueueSize: 0 },
    <snip>
    _peername: { address: '127.0.0.1', family: 'IPv4', port: 7545 },
    <snip>
}
Run Code Online (Sandbox Code Playgroud)

为了完整性,这里是监听信号的代码:

async function stop() {
  console.log('Shutting down...')

  if (process.env.DEBUG) console.log(process._getActiveHandles())

  process.exit(0)
}

process.on('SIGTERM', async () => {
  console.log('Received SIGTERM')
  await stop()
})

process.on('SIGINT', async () => {
  console.log('Received SIGINT')
  await stop()
})
Run Code Online (Sandbox Code Playgroud)

看起来web3正在打开一个套接字,这是有道理的,因为我从未告诉它关闭连接.通过文档和谷歌搜索,它看起来不像web3对象的close或end方法.

手动关闭stop …

javascript websocket ethereum solidity web3-donotuse

9
推荐指数
1
解决办法
1003
查看次数

以太坊LES getProofsV2始终返回[](空节点)

我无法获得以太网LES getProofsV2(或getProofs)请求来生成ProofsV2(或Proofs)响应,除了一个空的节点数组外.这适用于针对打开LES连接的GETH节点的请求.

请求参数是[B_32 (blockHash), B_32 (key), B_32 (key2), P (fromLevel)].我blockHash从最近开采的块中提供了一个; a key作为20字节帐户的Keccak256哈希值(来自几个月前的事务),一个key232字节的0和0,fromLevel我期望得到一个Nodes最后一个节点具有RLP编码的数组在AccountState(用{nonce,balance,...}.就是这种期望纠正或将我只期望得到节点的数组,如果?key在有交易的规定blockHash?[事实是,我都尝试- blockHash瓦特/或W/O交易,仍然肿大[].

具体来说,这是请求数据:

ETH: LES-ProofsV2-Req:   L  1: [
ETH: LES-ProofsV2-Req:     L  4: [
ETH: LES-ProofsV2-Req:       I 32: 0x0a89dd55d38929468c1303b92ab43ca57269ac864175fc6208ae739ffcc17c9b
ETH: LES-ProofsV2-Req:       I 32: 0x272cf200ca06815ab2170fde0901e7da10ab1dddc31223184f139def3b09f670
ETH: LES-ProofsV2-Req:       I 32: 0x0000000000000000000000000000000000000000000000000000000000000000
ETH: LES-ProofsV2-Req:       I  0: 0x
ETH: LES-ProofsV2-Req:     ]
ETH: LES-ProofsV2-Req:   ]
Run Code Online (Sandbox Code Playgroud)

其中blockHash 0x0a89...是blockNumber 5732521,key2是帐户的哈希值0x49f4C50d9BcC7AfdbCF77e0d6e364C29D5a660DF.

为完整起见,回复是: …

ethereum go-ethereum

9
推荐指数
0
解决办法
93
查看次数

错误:在调用多重调用合约以太坊的聚合函数时发送交易需要签名者

\n

index.js:1 无法获取多重调用块 [{\xe2\x80\xa6}] 1 错误:发送交易需要签名者(操作=“sendTransaction”,代码=UNSUPPORTED_OPERATION,版本=contracts/5.0.2)

\n
\n

多重调用合约地址 - https://etherscan.io/address/0xeefba1e63905ef1d7acba5a8513c70307c1ce441#writeContract

\n

在 Uniswap 界面中工作,但在我的代码中抛出错误,我不知道出了什么问题

\n

javascript reactjs ethereum ether etherscan

9
推荐指数
2
解决办法
2万
查看次数

MetaMask 不注入 window.ethereum:未捕获(承诺中)TypeError:无法读取未定义的属性“请求”

首先,让我提一下这是一个浏览器内项目,所以我只能使用

<script src="https://cdn.jsdelivr.net/gh/ethereum/web3.js/dist/web3.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

几个月前,我制作了一个 dapp,即使我从未设置过提供程序,它也能正常工作,所以我猜它使用了 MetaMask 提供的提供程序。但是,我在这里使用指南,唯一的问题是以下代码,

<script src="https://cdn.jsdelivr.net/gh/ethereum/web3.js/dist/web3.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

此代码用于在元掩码用户在我的 dapp 上批准元掩码后输出元掩码用户的地址,但是我收到了错误

Uncaught (in promise) TypeError: Cannot read property 'request' of undefined
Run Code Online (Sandbox Code Playgroud)

该错误只是说,如果我必须添加提供程序,我的实际目标是使用元掩码中的提供程序,并允许连接到元掩码,其余功能(例如传输或其他我知道如何处理它们),它只是当我尝试加载页面时,似乎我的问题出现了。

我没有可用的以太节点,也不打算使用nodejs,只有一个显示Metamask地址的html文件,因此使用浏览器内的web3js。

我希望这只是我没有意识到一些简单的事情,因为我似乎找不到现在不能使用 web3js 的原因。

javascript browser ethereum web3js metamask

9
推荐指数
2
解决办法
3万
查看次数