问题标签 [evm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
218 浏览

solidity - 在solidity中,函数签名是否考虑了数据位置?

例如:如果我的功能是:

函数签名会是散列的前四个字节:someFunction(uint256,bytes)还是散列的前四个字节:someFunction(uint256,bytes calldata)?甚至someFunction(uint256,bytescalldata)(字节和调用数据之间没有空格)

0 投票
1 回答
305 浏览

rust - 如何为 Substrate Runtime 实现 EVM Trait?

向您的运行时添加模块之后,我正在尝试为Dothereum Runtime实现Parity Substrate paint-evm特征。

EVM 模块特征定义如下:

然而,这里的添加模块教程有点含糊,鼓励人们:

“.. 如果事情没有意义,请探索 [..] 模块的源代码..”

虽然 EVM 模块代码似乎不太复杂,但我不明白如何为我的运行时实现 EVM 特征:

FeeCalculator在这里做什么和ConvertAccountId期望什么类型?

0 投票
1 回答
264 浏览

rust - 没有为“事件”实现“paint_evm::Event”

向您的运行时添加模块之后,我正在尝试为Dothereum Runtime实现Parity Substrate paint-evm特征。

根据我之前的工作:How to implement the EVM Trait for a Substrate Runtime?

我为 Dothereum 运行时实现了 EVM Trait:

但是,该paint_evm::Event特征未实现Event

paint_evm模块在这里期望什么。这怎么能代替呢?

0 投票
1 回答
264 浏览

blockchain - 以太坊合约的实际字节码在哪里?

据我所知,在创建合约时,init字段中的部署代码会执行一次,并在返回实际字节码后被丢弃,与此同时,帐户状态中的codeHash字段也会相应更新,但在哪里这些实际的字节码存储了吗?

我试图从黄皮书的执行模型部分找到一些相关信息:

它不是将程序代码存储在一般可访问的内存或存储器中,而是单独存储在只能通过专门指令交互的虚拟 ROM 中。

但是我不太明白,并且仍然不知道在调用合约调用时如何在执行环境中检索和提供实际的字节码。

希望能在这里得到一些见解,谢谢!

0 投票
1 回答
153 浏览

nearprotocol - 与接近原生 rust/assemblyscript 相比,使用接近 evm 可靠度合约的权衡是什么?

与接近原生 rust/assemblyscript 相比,使用接近 evm 可靠度合约的权衡是什么?

来自https://discord.com/channels/490367152054992913/490367152054992917/749591544478171198的 xpost

0 投票
1 回答
631 浏览

token - 为什么我在使用带有 CosmosSDK 的 Starport 时收到“无效硬币面额”

我正在使用 Starport ( https://github.com/tendermint/starport ) 引导我的 Cosmos SDK 区块链。我只想要一个 Token 来抵押和使用区块链。

这是我的config.yml文件

尝试运行区块链的守护进程时,我收到错误

我的硬币面额有什么问题,在自定义我的代币时我需要更改/注意config.yml什么?谢谢

0 投票
1 回答
103 浏览

ethereum - 是否可以使用其存储但传递 msg.sender 以可靠的方式调用合约?

我有以下两个合同:

如前所述,我想在 in 的上下文中调用a.foo,但B我想在 A 的存储中使用。这意味着 using不起作用,因为它会使用 B 的存储进行调用。msg.senderBsomeDatadelegatecallA.foo

有什么办法可以在这里做我想做的事吗?问题与“真实”A已经部署在主网上的事实有关,我无法改变它的编写方式。

0 投票
1 回答
107 浏览

assembly - 为什么即使包含 JUMPDEST 也无法跳入指令?

这是我的整个程序。其背后的原因是以太坊上的程序越大,加载它的成本就越高(因为每字节的gas成本非常高)。

所以我要跳进去PUSH3 0x5b6000,但如果我们拆解0x5b6000,那就意味着

因此,由于 evm 操作码编码是完全可变长度的(并且所有指令在 PUSHxx 旁边都是一个字节长)并且我正在跳转到 a JUMPDEST,为什么这个事务会失败?

黄皮书的什么地方规定,去aJUMPDEST不是有效跳转目的地的唯一要求?

0 投票
1 回答
129 浏览

hyperledger-fabric - Hyperledger Fabric EVM 如何从公钥生成地址?

在以太坊中,钱包地址是钱包公钥的 keccak256 哈希的最后 20 个字节。

我正在使用Hyperledger Fabric EVM,我想知道用于从公钥生成地址的机制。

我将 keccak256、sha256 和 sha-3 256 应用于我的公钥,但我没有得到正确的地址...

这是我的 pem 格式的私钥:

这是我的 pem 格式的公钥:

这是我的十六进制格式的公钥:

这是我的地址:

我正在使用 secp256r1

0 投票
1 回答
564 浏览

node.js - Solidity (solc) 编译挑战

我正在尝试利用我认为非常好的代码,我发现另一个答案允许我一次编译目录中的多个 .sol 文件,同时在 /build 目录中生成 .json 文件。

我已经为此花了好几天的时间……但无法突破。从下面的代码和控制台日志语句中可以看出,我知道 compile.js 是:

  1. 读取 /contracts 文件夹中的所有 contract.sol 文件......其中有 7 个。(它们都很短。只有一个被编码。其余的只有 pragam 声明以及合同名称声明) .

  2. 它正在删除 /build 文件夹及其内容并在编译之前重新创建它。

  3. 它在 solc.compile 行和控制台日志上收到以下错误,根据“/////// Output is -”下面的错误输出。

    errors: [ '解析输入 JSON 时出错:* 第 1 行,第 1 列\n' + ' 语法错误:需要值、对象或数组。\n' + '* 第 1 行,第 1 列\n' + ' 一个有效的 JSON 文档必须是数组或对象值。\n' ]

  4. 它进入了 for 循环......但似乎除了在 errors.json 文件的 /build 目录中的错误之外没有输出任何内容。

我的程序都是 pragma ^0.4.25,我的 package.json 文件中的 solc 编译器版本也是如此。

我渴望有经验的眼睛看到问题并帮助我完成这个编译步骤。

我知道很多人会建议使用 Truffle,但这是一个预先存在的 React 应用程序,a)我不想从头开始,b)我真的想了解这个关键的 solc.compile 步骤和 for环形!

PS 合约可以在 Remix 中干净地编译、部署和工作。

但是我需要访问 React 应用程序中的接口和字节码,以便我可以启动许多不同的以太坊交易。

谢谢你。