2016-08-22 8 views
0

저는 C#에서 ethereum 계약 ABI 문자열을 사용하고 nethereum을 사용하여 현명한 계약서와 상호 작용할 수있는 함수를 호출하는 프로그램을 작성하고 있습니다. 더 작은 ABI 문자열을 사용하면 작동시킬 수 있지만 어떤 이유로이 긴 문자열이나 작은 예제 ABI의 길이를 초과하는 다른 ABI에서는 작동하지 않습니다. 내가 오류 메시지가 얻을 아래 내가 코드를 컴파일 (내가 JSON 직렬화 복원을 시도 마음에 베어를하지만 여전히 같은 오류를한다) :ABI 문자열이 작동하지 않습니다.

유형의 예외 'Newtonsoft.Json.JsonReaderException' Newtonsoft.Json.dll에서 발생했지만 사용자 코드에서 처리되지 않았습니다.

추가 정보 : 값을 구문 분석 한 후 예기치 않은 문자가 발생했습니다 : 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); 
} 
+1

오류는 'name': 'showBurnedCouns', 'outputs': [{ 'name': ','type ':'uint256 '}]''때문에 발생합니다. '''는'outputs' 블록 안에 없습니다. –

+0

@diiN_이 질문을 정리할 수 있도록 답변으로 의견을 게시하고 평판도 얻으십시오. – eth

답변

0

참조 diiN_ 코멘트. 바보 나! 내 댓글에서

0

는 :

오류 때문에 라인 'name':'showBurnedCouns', 'outputs':[{'name':','type':'uint256'}]이다. 출력 블록 안에 '이 없습니다.