在函数参数中发送哈希

时间:2017-10-21 15:33:54

标签: hash ethereum solidity smartcontracts

我写了一个智能合约,用户发送一个哈希字符串:问题的答案(因为我不希望它在区块链中公开)。 它与正确的散列答案进行比较:

function answerQuestion(bytes32 _answer) notAnswered returns (string){
    if(_answer == keccak256(answer)){
        isAnswered = true;
        winner = msg.sender;
        return pos;
    }
    return "WRONG";
}

要检查它是否有效,我会在在线工具(https://emn178.github.io/online-tools/keccak_256.html

中散列正确的答案

它给了我57315cf71be5ffcaf957b9cc196b322e1c4d5a1832396abcee71d05d8caf41a6之类的东西 并将其解析为浏览器可靠性中的参数。但它返回:

Error encoding arguments: SyntaxError: Unexpected token c in JSON at position 6

知道我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我正在使用Remix IDE开发智能合约,我遇到了同样的问题。我通过在哈希的开头附加0x来解决这个问题。

library(rstanarm) 
data(kidiq)
d <- kidiq  

fit <- stan_glm(kid_score ~ mom_iq,
           data = d,   
           prior = normal(0, 2.5),  
           prior_intercept = normal(0, 10),  
           prior_aux = cauchy(0, 100)) 

plot(kid_score ~ mom_iq, data = d, type = "n")
abline(fit, col = 2)

pred_lin <- posterior_linpred(fit)

loop <- length(d$mom_iq)
I <- matrix(NA, loop, 2)
for(i in 1:loop){
I[i,] = quantile(pred_lin[,i], c(.025, .975))
}
lines(d$mom_iq, I[,1], lty = 2)
lines(d$mom_iq, I[,2])