问题标签 [nethereum]

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 回答
801 浏览

blockchain - 如何通过 Nethereum 获取智能合约的 ABI?

我可以访问基于 Quorum 的区块链服务,并且我正在使用 Nethereum 库与智能合约进行交互。

当我部署一个新的智能合约时,Nethereum 会给出智能合约的地址和 ABI。

但是如果不部署流程,我就无法访问 SmartContract 的 ABI。如何根据智能合约的地址获取 ABI?

0 投票
0 回答
258 浏览

c# - Nethereum 不会发送 ETH 付款 c#

这是让我想在自己脸上猛击键盘的问题之一。

我一直在编写一个接受加密支付以更新用户余额的机器人。检查余额很好,效果很好。

当它运行检查命令以检查是否为正余额时,它需要将该余额转移到另一个钱包。

我正在使用两个地址,我控制其中的两个私钥进行测试。我已经充值了 5 美元的 ETH。

当它运行发送事务命令时,我收到以下错误:

1/2 内部异常

HttpRequestException: 由于目标机器主动拒绝,无法建立连接。

2/2 内部异常

SocketException: 由于目标机器主动拒绝,无法建立连接。

这是我正在运行的方法:

提前感谢您保存我的程序、键盘和面部。

编辑:

对于任何有同样问题的人,我通过再次将 RPC 指向 infura 来解决它,就像上面的一样,我不知道它必须运行本地节点或指向外部 api

我这样解决了:

0 投票
1 回答
286 浏览

c# - 如何使用 Nethereum 从原始交易中提取链 ID?

这是我到目前为止的 F# 代码 -

但是,我确信此代码在某些情况下是不完整的,因为我无法弄清楚如何确定https://github.com/ethereum/EIPs/blob/master/EIPS中指定的 {0, 1} 加数/eip-155.md

如果我能弄清楚如何确定加数,那么我相信上面的链 id 提取算法就完成了。

0 投票
1 回答
691 浏览

c# - 使用 Nethereum 调用 BSC 合约函数会产生相同(不正确)的结果

我是使用 Nethereum 的新手,我正在尝试调用owner()BSC 智能合约中的一个函数,该函数返回所有者的地址。我的代码:

我期望owner成为一个钱包地址。但是,无论我使用什么合约地址,我的代码总是返回一个字符串"0x8da5cb5b"(显然太短而不能成为地址),我注意到它恰好Sha3Signaturefunction.FunctionBuilder.FunctionABI. 有谁知道我在这里做错了什么?

0 投票
1 回答
161 浏览

c# - “无法建立连接,因为目标机器主动拒绝它” Nethereum 异常

我正在使用 Nethereum 调用owner()在 BSC 合约中调用的函数,该函数应返回合约所有者的地址,但是当我使用该CallAsync()方法时,出现异常“无法建立连接,因为目标机器主动拒绝它”

我的代码(简化):

调用该行时owner = await task,我收到一条异常消息“尝试发送 rpc 请求时发生错误”,该消息有一个内部异常,消息“发送请求时发生错误。”,它有自己的内部异常带有消息“无法连接到远程服务器”,并且这个有它自己的内部异常说“无法建立连接,因为目标机器主动拒绝它[IP地址]”

有谁知道我在这里做错了什么?(我已经简化了上面的代码,但我确实检查了该函数是否存在)

0 投票
1 回答
137 浏览

solidity - 将字符串的 2darray 作为参数传递时出现“错误:类型的数组值”

我使用 ganache truffle 套件作为本地区块链来测试我的智能合约。这是我的solidity函数,我可以添加一个二维字符串数组并用它填充一个映射(字符串=>字符串):

这是我的 program.cs 代码,我尝试通过 .net 与 AddSignature 函数进行通信:

0 投票
2 回答
1657 浏览

c# - 我的 C# Web API 中的 Nethereuem SendTransactionAsync 失败,事务类型不受支持:eth_sendRawTransaction

我正在努力将 Nethereum 集成到我的 .NET 5 C# API 中,并且可以对我选择的区块链 (BSC) 进行读取查询,但无法让 SendTransactionAsync 或 SendRequestAsync 成功执行。我一直收到以下异常:
Nethereum.JsonRpc.Client.RpcResponseException: 'transaction type not supported: eth_sendRawTransaction'.

以下是我尝试过的代码片段:

我缺少配置步骤吗?任何帮助表示赞赏!

编辑:我想调用一个合同方法来改变合同中的值,而不是发送货币。所以我需要帮助弄清楚如何做到这一点。

0 投票
1 回答
394 浏览

.net - 如何解决网络和客户端之间的 EIP 版本冲突?

我启动了本地 Hardhat 网络(用于测试智能合约),使用 Nethereum 连接到它,当我尝试启动任何交易时,ChainId required for TransactionType 0X02 EIP1559抛出异常。然后我将网络更改为Ganache,但错误仍然存​​在。例如(F# 代码):

我认为我应该等到 Nethereum 开发人员实现对 EIP-1559 的支持,因为在 .NET 世界中没有其他选择。是否有可能以某种方式禁用此交易要求,或更改实际标准的版本?我在 Hardhat 和 Ganache 文档中没有找到类似的功能,但也许有适合具有此功能的开发人员的网络?

0 投票
1 回答
304 浏览

ethereum - 如何使用 Nethereum 从智能合约中获取对象数组

我在智能合约中有功能:

我有 C# 中的代码。我想从智能合约中返回药箱列表

但我收到一个错误:

如何正确反序列化对象列表?

0 投票
0 回答
325 浏览

transactions - Nethereum 部署合约错误:“发生一个或多个错误。(无效发件人:eth_sendRawTransaction)”

我在本地机器上运行私有以太坊区块链服务器。我设置了创世文件,创建了一些节点,并在 Solidity 中创建了一个合约。目的是在专用网络上获得一个带有智能合约的运行区块链。由于我们在 .NET 框架上开发,我们希望使用 Nethereum 与区块链进行交互。

区块链设置良好,节点在区块链上设置良好,我可以使用 Nethereum 与节点交互并查询它们。但是,每当我尝试进行任何交易时,它都会失败并显示错误消息“发生一个或多个错误。(无效的发件人:eth_sendRawTransaction)”。无论这只是发送以太币还是部署合约。

我的创世文件如下: { "config": { "chainId": 1515, "homesteadBlock": 0, "eip150Block": 0, "eip150Hash": "0x0000000000000000000000000000000000000000000000000000000000050055000000000000000000000000005005Block"0:" , "byzantiumBlock": 0, "constantinopleBlock": 0, "petersburgBlock": 0, "istanbulBlock": 0, "clique": { "period": 0, "epoch": 30000 } }, "nonce": "0x0 ", "timestamp": "0x0", "extraData": "0x000000000000000000000000000000000000000000000000000000000000000039FBa5910Ecd5A3AbB81493F898bFecf7046a9E20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "gasLimit": "0x47b760", "difficulty": "0x1", "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "coinbase": "0x3333333333333333333333333333333333333333", "alloc": { "0x39FBa5910Ecd5A3AbB81493F898bFecf7046a9E2": { "balance": "0x999999999" }, "0x321A928649C3338d1F6804fEdFa57eB52BEDa077": { "balance": "0x999999999" }, "0x7f3FdA43e7b57628107C7c76A13141FA8684fAd3": { "balance": "0x999999999" } }, "number": "0x0", "gasUsed": "0x0", "parentHash": " 0x000000000000000000000000000000000000000000000000000000000000000000", "baseFeePerGas": null }difficulty": "0x1", "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "coinbase": "0x3333333333333333333333333333333333333333", "alloc": { "0x39FBa5910Ecd5A3AbB81493F898bFecf7046a9E2": { "balance": "0x999999999" }, "0x321A928649C3338d1F6804fEdFa57eB52BEDa077": { "balance" : "0x999999999" }, "0x7f3FdA43e7b57628107C7c76A13141FA8684fAd3": { "balance": "0x999999999" } }, "number": "0x0", "gasUsed": "0x0", "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "baseFeePerGas": null }difficulty": "0x1", "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "coinbase": "0x3333333333333333333333333333333333333333", "alloc": { "0x39FBa5910Ecd5A3AbB81493F898bFecf7046a9E2": { "balance": "0x999999999" }, "0x321A928649C3338d1F6804fEdFa57eB52BEDa077": { "balance" : "0x999999999" }, "0x7f3FdA43e7b57628107C7c76A13141FA8684fAd3": { "balance": "0x999999999" } }, "number": "0x0", "gasUsed": "0x0", "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "baseFeePerGas": null }0x0000000000000000000000000000000000000000000000000000000000000000", "coinbase": "0x3333333333333333333333333333333333333333", "alloc": { "0x39FBa5910Ecd5A3AbB81493F898bFecf7046a9E2": { "balance": "0x999999999" }, "0x321A928649C3338d1F6804fEdFa57eB52BEDa077": { "balance": "0x999999999" }, "0x7f3FdA43e7b57628107C7c76A13141FA8684fAd3": { "余额”:“0x999999999”}},“数字”:“0x0”,“gasUsed”:“0x0”,“parentHash”:“0x00000000000000000000000000000000000000000000000000000000000000000”,“baseFeePer }Gas”:0x0000000000000000000000000000000000000000000000000000000000000000", "coinbase": "0x3333333333333333333333333333333333333333", "alloc": { "0x39FBa5910Ecd5A3AbB81493F898bFecf7046a9E2": { "balance": "0x999999999" }, "0x321A928649C3338d1F6804fEdFa57eB52BEDa077": { "balance": "0x999999999" }, "0x7f3FdA43e7b57628107C7c76A13141FA8684fAd3": { "余额”:“0x999999999”}},“数字”:“0x0”,“gasUsed”:“0x0”,“parentHash”:“0x00000000000000000000000000000000000000000000000000000000000000000”,“baseFeePer }Gas”:0x39FBa5910Ecd5A3AbB81493F898bFecf7046a9E2": { "balance": "0x999999999" }, "0x321A928649C3338d1F6804fEdFa57eB52BEDa077": { "balance": "0x999999999" }, "0x7f3FdA43e7b57628107C7c76A13141FA8684fAd3": { "balance": "0x999999999" } }, "number": "0x0", “gasUsed”:“0x0”,“parentHash”:“0x00000000000000000000000000000000000000000000000000000000000000000”,“baseFeePerGas”:null }0x39FBa5910Ecd5A3AbB81493F898bFecf7046a9E2": { "balance": "0x999999999" }, "0x321A928649C3338d1F6804fEdFa57eB52BEDa077": { "balance": "0x999999999" }, "0x7f3FdA43e7b57628107C7c76A13141FA8684fAd3": { "balance": "0x999999999" } }, "number": "0x0", “gasUsed”:“0x0”,“parentHash”:“0x00000000000000000000000000000000000000000000000000000000000000000”,“baseFeePerGas”:null }0x0”,“gasUsed”:“0x0”,“parentHash”:“0x00000000000000000000000000000000000000000000000000000000000000000000000000000000”,“baseFeePerGas”:空}0x0”,“gasUsed”:“0x0”,“parentHash”:“0x00000000000000000000000000000000000000000000000000000000000000000000000000000000”,“baseFeePerGas”:空}

我按如下方式启动节点: geth --nousb --datadir=node1/ --networkid 1515 --syncmode full --port 30310 --miner.gasprice 0 --miner.gastarget 470000000000 --http --http.addr localhost --http.port 8545 --http.api admin,eth,miner,net,txpool,personal,web3 --mine --allow-insecure-unlock --unlock "0x39FBa5910Ecd5A3AbB81493F898bFecf7046a9E2" --password node1/password.txt

请注意,网络 ID 确实与链 ID 匹配,并且在两个地方都指定了。

使用 Nethereum 进行交易的 C# 代码如下所示:

据我所知,这应该将以太币从节点 1 发送到节点 2,然后部署合约。但是,两个交易都没有成功。我已确保我的链 ID 和网络 ID 相同,Nethereum 解锁帐户并签署交易,所以这应该不是问题。为了以防万一,我确实尝试过手动解锁帐户,但这没有任何区别。我查过了,交易有正确的链 ID 和发送者地址。

我已经为此工作了几天,但我离找到解决方案还差得远。任何帮助表示赞赏。