建议和反馈

请填写你的反馈内容

问答 > 共识算法 > 问答详情

如何在一个衬垫里转换这个区块链脚本?10LK

我知道如何在服务器上使用此区块链脚本,但是我不知道如何将其最小化为一个函数(只有一个返回值),最好是一个衬里:

String.prototype.hashCode = function(){
    if(this.length ==0){
        return 0;
    }else{
        return parseInt(this.split('').map(function(char){
            return char.charCodeAt(0);
        }).reduce(function(current, previous){
            return previous + current;
        }))+ (this.substr(1, this.length)).hashCode();
    }
};
nonce = 0;
while(true){
    hash = (transaction + nonce).hashCode() % 1234;
    if (hash ==0){
        break;
    }
    nonce++;
}
return nonce;

当然,交易是一个字符串。我尝试将其替换为哈希,但是由于哈希码函数会自行调用,因此我不知道如何在没有函数的情况下管理此循环。

您的结果必须在上面的缩小链接中起作用


2019-11-08
0
请先登陆或注册

公子不笑2019-11-08

这是原始代码的直接翻译

function findNonce( data ){
var buffer, i, hash, nonce = -1;
    data = '' + ( data || '' );
    do {
        hash = 0;
        nonce++;
        buffer = data + nonce;
        i = buffer.length;
        while(i--) hash += buffer.charCodeAt(i) * (i+1);
    } while ( hash % 1234 );
    return nonce;
};

而且,一旦缩小,

function findNonce(n){var e,o,r,t=-1;n=""+(n||"");do for(r=0,t++,e=n+t,o=e.length;o--;)r+=e.charCodeAt(o)*(o+1);while(r%1234);return t}

但是,如果需要更好的性能,则应该对其进行优化,首先计算输入字符串的哈希值,然后仅对每个随机数值进行计算。

function findNonceFast( data ){
var preHash, noncePos, nonce = -1, code; 
    function hashCalc( s, hash, pos ){
        var i = s.length; while(i--) hash += s.charCodeAt(i) * (i+pos+1);
        return hash;
    };
    data =  '' + ( data || '' );
    preHash = hashCalc( data, 0, 0 );
    noncePos = data.length;
    do {
        nonce++;
        code = hashCalc( ''+nonce, preHash, noncePos );
    } while (code % 1234)
    return nonce;
};

缩小的

function findNonceFast(n){function r(n,r,t){for(var e=n.length;e--;)r+=n.charCodeAt(e)*(e+t+1);return r}var t,e,o,a=-1;n=""+(n||""),t=r(n,0,0),e=n.length;do a++,o=r(""+a,t,e);while(o%1234);return a}


投一票
评论(0)
赞赏(0)
邀请

感谢您的善举,每一次解答会成为新人的灯塔,回答被采纳后获得20算力和相应的LK币奖励