问题标签 [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.
blockchain - 如何通过 Nethereum 获取智能合约的 ABI?
我可以访问基于 Quorum 的区块链服务,并且我正在使用 Nethereum 库与智能合约进行交互。
当我部署一个新的智能合约时,Nethereum 会给出智能合约的地址和 ABI。
但是如果不部署流程,我就无法访问 SmartContract 的 ABI。如何根据智能合约的地址获取 ABI?
c# - Nethereum 不会发送 ETH 付款 c#
这是让我想在自己脸上猛击键盘的问题之一。
我一直在编写一个接受加密支付以更新用户余额的机器人。检查余额很好,效果很好。
当它运行检查命令以检查是否为正余额时,它需要将该余额转移到另一个钱包。
我正在使用两个地址,我控制其中的两个私钥进行测试。我已经充值了 5 美元的 ETH。
当它运行发送事务命令时,我收到以下错误:
1/2 内部异常
HttpRequestException: 由于目标机器主动拒绝,无法建立连接。
2/2 内部异常
SocketException: 由于目标机器主动拒绝,无法建立连接。
这是我正在运行的方法:
提前感谢您保存我的程序、键盘和面部。
编辑:
对于任何有同样问题的人,我通过再次将 RPC 指向 infura 来解决它,就像上面的一样,我不知道它必须运行本地节点或指向外部 api
我这样解决了:
c# - 如何使用 Nethereum 从原始交易中提取链 ID?
这是我到目前为止的 F# 代码 -
但是,我确信此代码在某些情况下是不完整的,因为我无法弄清楚如何确定https://github.com/ethereum/EIPs/blob/master/EIPS中指定的 {0, 1} 加数/eip-155.md
如果我能弄清楚如何确定加数,那么我相信上面的链 id 提取算法就完成了。
c# - 使用 Nethereum 调用 BSC 合约函数会产生相同(不正确)的结果
我是使用 Nethereum 的新手,我正在尝试调用owner()
BSC 智能合约中的一个函数,该函数返回所有者的地址。我的代码:
我期望owner
成为一个钱包地址。但是,无论我使用什么合约地址,我的代码总是返回一个字符串"0x8da5cb5b"
(显然太短而不能成为地址),我注意到它恰好Sha3Signature
是function.FunctionBuilder.FunctionABI
. 有谁知道我在这里做错了什么?
c# - “无法建立连接,因为目标机器主动拒绝它” Nethereum 异常
我正在使用 Nethereum 调用owner()
在 BSC 合约中调用的函数,该函数应返回合约所有者的地址,但是当我使用该CallAsync()
方法时,出现异常“无法建立连接,因为目标机器主动拒绝它”
我的代码(简化):
调用该行时owner = await task
,我收到一条异常消息“尝试发送 rpc 请求时发生错误”,该消息有一个内部异常,消息“发送请求时发生错误。”,它有自己的内部异常带有消息“无法连接到远程服务器”,并且这个有它自己的内部异常说“无法建立连接,因为目标机器主动拒绝它[IP地址]”
有谁知道我在这里做错了什么?(我已经简化了上面的代码,但我确实检查了该函数是否存在)
solidity - 将字符串的 2darray 作为参数传递时出现“错误:类型的数组值”
我使用 ganache truffle 套件作为本地区块链来测试我的智能合约。这是我的solidity函数,我可以添加一个二维字符串数组并用它填充一个映射(字符串=>字符串):
这是我的 program.cs 代码,我尝试通过 .net 与 AddSignature 函数进行通信:
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'
.
以下是我尝试过的代码片段:
我缺少配置步骤吗?任何帮助表示赞赏!
编辑:我想调用一个合同方法来改变合同中的值,而不是发送货币。所以我需要帮助弄清楚如何做到这一点。
.net - 如何解决网络和客户端之间的 EIP 版本冲突?
我启动了本地 Hardhat 网络(用于测试智能合约),使用 Nethereum 连接到它,当我尝试启动任何交易时,ChainId required for TransactionType 0X02 EIP1559
抛出异常。然后我将网络更改为Ganache,但错误仍然存在。例如(F# 代码):
我认为我应该等到 Nethereum 开发人员实现对 EIP-1559 的支持,因为在 .NET 世界中没有其他选择。是否有可能以某种方式禁用此交易要求,或更改实际标准的版本?我在 Hardhat 和 Ganache 文档中没有找到类似的功能,但也许有适合具有此功能的开发人员的网络?
ethereum - 如何使用 Nethereum 从智能合约中获取对象数组
我在智能合约中有功能:
我有 C# 中的代码。我想从智能合约中返回药箱列表
但我收到一个错误:
如何正确反序列化对象列表?
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 和发送者地址。
我已经为此工作了几天,但我离找到解决方案还差得远。任何帮助表示赞赏。