2016-08-22 1 views
0

J'écris un programme qui prend une chaîne ABI contractée par ethereum en C# et l'utilise pour appeler une fonction qui me permet d'interagir avec le contrat intelligent en utilisant nethereum. Lorsque j'utilise une chaîne ABI plus petite, je suis capable de la faire fonctionner mais pour une raison quelconque, elle ne fonctionnera pas avec cette chaîne plus longue ou tout autre ABI qui dépasse la longueur d'un petit exemple d'ABI. Lorsque je compile le code ci-dessous je reçois le message d'erreur (nu à l'esprit que je l'ai essayé JSON désérialisation mais qui fait toujours la même erreur):La chaîne ABI ne fonctionne pas

Une exception de type « Newtonsoft.Json.JsonReaderException » s'est produite dans Newtonsoft.Json.dll mais n'a pas été traitée dans le code utilisateur

Informations complémentaires: Après l'analyse d'une valeur, un caractère inattendu a été rencontré: t. Chemin '[0] .outputs [0] .name', ligne 3, la position 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); 
} 
+1

L'erreur est due à la ligne «nom»: «showBurnedCouns», «outputs»: [{'name': ',' type ':' uint256 '}] '. Un '' 'est manquant dans le bloc' outputs'. –

+0

@diiN_ S'il vous plaît poster votre commentaire comme une réponse afin que cette question peut être réglée, et vous obtenez également la réputation. – eth

Répondre

0

Voir diiN_ commentaire sur ma question, car cela répond à la question. Que je suis bête!

0

De mon commentaire:

L'erreur est en raison de la ligne 'name':'showBurnedCouns', 'outputs':[{'name':','type':'uint256'}]. Un ' est manquant dans le bloc de sortie.