0

我正在编写一个程序,它采用 C# 中的以太坊合约 ABI 字符串并使用它来调用一个函数,该函数允许我使用 nethereum 与智能合约进行交互。当我使用较小的 ABI 字符串时,我能够使其工作,但由于某种原因,它无法与这个较长的字符串或任何其他超过小示例 ABI 长度的 ABI 一起工作。当我编译下面的代码时,我收到错误消息(请记住,我已经尝试过 JSON 反序列化,但仍然会产生同样的错误)

Newtonsoft.Json.dll 中出现“Newtonsoft.Json.JsonReaderException”类型的异常,但未在用户代码中处理

附加信息:解析值后遇到意外字符:t。路径“[0].outputs[0].name”,第 3 行,位置 20。

protected void init()
{
    web3 = new Nethereum.Web3.Web3();

    string abi = @"[{'constant':false,'inputs':[{'name':'username','type':'string'},
    {'name':'location','type':'string'}],'name':'addUser','outputs':
    [{'name':','type':'string'}],'type':'function'},{'constant':false,'inputs'
    :[],'name':'burnCoins','outputs':[{'name':','type':'uint256'}],'type':'function'},
    {'constant':false,'inputs':[{'name':'vendor','type':'address'},
    {'name':'recipient','type':'address'}],'name':'trade','outputs':[],
    'type':'function'},{'constant':false,'inputs':[{'name':'vendor','type':'address'},
    {'name':'isPositive','type':'bool'},{'name':'message','type':'string'}],
    'name':'giveReputation','outputs':[],'type':'function'},{'constant':false,'inputs':
    [{'name':'user','type':'address'}],'name':'showBurnedCoins','outputs':[{'name':
    ','type':'uint256'}],'type':'function'},{'constant':false,'inputs':[{'name':'user',
    'type':'address'}],'name':'viewReputation','outputs':[{'name':','type':'uint256'},
    {'name':','type':'uint256'},{'name':','type':'uint256'}],'type':'function'},
    {'anonymous':false,'inputs':[{'indexed':true,'name':'user','type':'address'},
    {'indexed':true,'name':'amountBurned','type':'uint256'}],'name':'_coinsBurned',
    'type':'event'},{'anonymous':false,'inputs':[{'indexed':true,'name':'user',
    'type':'address'},{'indexed':true,'name':'message','type':'string'}],'
    name':'_positiveReputation','type':'event'},{'anonymous':false,'inputs'
    :[{'indexed':true,'name':'user','type':'address'},{'indexed':true,'name':'message'
    ,'type':'string'}],'name':'_negativeReputation','type':'event'},
    {'anonymous':false,'inputs':[{'indexed':true,'name':'username','type':'string'},
    {'indexed':true,'name':'location','type':'string'},{'indexed':true,'name':
    'user','type':'address'}],'name':'_addUser','type':'event'},{'anonymous':false,
    'inputs':[{'indexed':true,'name':'vendor','type':'address'},{'indexed':true,
    'name':'buyer','type':'address'}],'name':'_newTrade','type':'event'},{'anonymous':
    false,'inputs':[{'indexed':true,'name':'user','type':'address'},{'indexed':true,
    'name':'positive','type':'uint256'},{'indexed':true,'name':'negative','type':'uint256'},
    {'indexed':false,'name':'total','type':'uint256'}],'name':'_viewedReputation',
    'type':'event'}]";

    string contractAddress = "0xd53c3dc2f3fcf1779b68ea8e441d857b4af5a413";
    Reputation = web3.Eth.GetContract(abi, contractAddress);
}
4

2 回答 2

3

从我的评论:

错误是因为线'name':'showBurnedCouns', 'outputs':[{'name':','type':'uint256'}]'输出块内缺少A。

于 2016-08-28T10:13:08.383 回答
0

请参阅 diiN_ 对我的问题的评论,因为这回答了问题。傻我!

于 2016-08-22T06:12:24.280 回答