美文网首页
币圈常见签名算法

币圈常见签名算法

作者: debuggor | 来源:发表于2020-06-10 21:55 被阅读0次

    目前大部分币种采用的交易签名算法都是基于椭圆曲线,大致可以分为两类,ECDSA和Schnorr签名。由Schnorr衍生出了EdDSA,由EdDSA衍生出了ed25519算法。

    一、ECDSA

    1、原理

    私钥:a ,公钥A:=aG;确定性随机数k;h(m)消息哈希
    r:=R(x, y)=k
    G的x坐标
    sign: s = k^-1 ( h(m) + ra) mod q
    verify: h(m) * G / s + r
    A/s =? kG
    h(m) * G / s + r
    A/s = (h(m) + rA)/s = [k(h(m) + ra)G]/(h(m)+ra) = k*G

    https://cryptobook.nakov.com/digital-signatures/ecdsa-sign-verify-messages

    2、币种

    btc、eth、eos、ripple、vet、yoyo、aac、bhp、ckb、cmt、dcr、hpb、hc、int、neo、nuls、only、stc、wan、tem、trx、aitc、atom

    3、code:

    // sign
    BigInteger k;
    do // generate r
    {
        k = kCalculator.nextK();
        ECPoint p = basePointMultiplier.multiply(ec.getG(), k).normalize();
        r = p.getAffineXCoord().toBigInteger().mod(n);
    }
    while (r.equals(ZERO));
    s = k.modInverse(n).multiply(e.add(d.multiply(r))).mod(n);
    

    二、Schnorr签名

    1、原理

    私钥:x,公钥:y;随机数k,Q=kG
    e = Hash(Q || pubKey || msg)
    sign: s = k - e * x
    verify: s
    G+yQ =? kG
    sG+ye=(k-ex)G+ye=kG -exG+yG=k*G

    2、币种

    zil

    3、code:

    // sign
    ECPoint Q = secp256k1.getG().multiply(k);
    BigInteger e = hash(Q, publicKey, msg).mod(secp256k1.getN());
    BigInteger s = e.multiply(privateKey).mod(n);
    s = k.subtract(s).mod(n);
    

    三、EdDSA

    1、原理

    pubKey = privKey * G,
    k = hash(hash(privKey) + msg) mod q
    R = k * G
    h = hash(R + pubKey + msg) mod q
    sign: s = (k + h * privKey) mod q signature { R, s }
    verify: R + hpubkey =? sG
    s * G = (k + h * privKey) * G = k * G + h * privKey * G = R + h * pubKey

    https://cryptobook.nakov.com/digital-signatures/eddsa-and-ed25519

    2、币种

    algo、vite

    四、ed25519

    1、原理

    在eddsa的基础上做了小改动,Sha512(seed)得到64位的新串,前面32位充当私钥,后32位用于计算r
    r=Sha512(后32位 + msg)
    R =r * G
    h = hash(R + pubKey + msg) mod q
    sign: s = (r + h * privKey) mod q

    image.png

    2、币种

    ada、ae、bcb、btm、etm、hbar、dot、iost、kin、sc、sda、xas、xem、xlm、xtz

    相关文章

      网友评论

          本文标题:币圈常见签名算法

          本文链接:https://www.haomeiwen.com/subject/cyjmtktx.html