EOS 在不同语言下 ECC 签名示例和速度对比

  • 约351字
  • 技术
  • 2019年6月10日

为了提高服务器端的 EOS 签名效率,对不同语言的椭圆曲线签名速度做了测试,分别测试 100 次和 10 次,结果如下:

公众号JavaScriptDartGoLang
100 次 (print)19255 ms8801 ms671 ms
100 次13761 ms6333 ms148 ms
10 次 (print)1971 ms883 ms70 ms
10 次1415 ms880 ms29 ms

print 表示在 console 中打印出了签名结果。从上表可以看出 Go 语言速度优势明显,签名速度: JavaScript < Dart < GoLang。Dart 椭圆曲线签名速度约是 JavaScript 的 2 倍左右,GoLang 签名速度约是 JavaScript 的近 100 倍。

JavaScript ECC 签名测试代码

import 'package:eosdart_ecc/eosdart_ecc.dart';
enum Color { red, blue, green }
signStr(String str) {
  EOSPrivateKey.fromString('5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3'
      .signString(str)
      .toString();
}
main() {
  var b = DateTime.now();
  for (var i = 0; i < 100; i++) {
    signStr("test$i");
  }
  var e = DateTime.now();
  var ms = e.difference(b).inMilliseconds;
  print("${ms}ms");
}

Dart ECC 签名测试代码

import 'package:eosdart_ecc/eosdart_ecc.dart';
enum Color { red, blue, green }
signStr(String str) {
  EOSPrivateKey.fromString('5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3'
      .signString(str)
      .toString();
}
main() {
  var b = DateTime.now();
  for (var i = 0; i < 100; i++) {
    signStr("test$i");
  }
  var e = DateTime.now();
  var ms = e.difference(b).inMilliseconds;
  print("${ms}ms");
}

Go ECC 签名测试代码

package main
import (
    "crypto/sha256"
    "fmt"
    "time"
    "github.com/eoscanada/eos-go/ecc"
)
func sign(str string) {
    privkey, _ := ecc.NewPrivateKey("5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3")
    digest := sha256Str(str)
    privkey.Sign(digest)
}
func sha256Str(str string) []byte {
    h := sha256.New()
    h.Write([]byte(str))
    return h.Sum(nil)
}
func main() {
    b := time.Now()
    for i := 0; i < 100; i++ {
        sign(fmt.Sprintf("test%d", i))
    }
    e := time.Now()
    t := e.UnixNano() - b.UnixNano()
    fmt.Println(t/int64(time.Millisecond), "ms")
}
标签 :

相关文章

日志分析还在逐行搜?AI分钟级定位问题

线上故障发生时,你还在逐行搜索日志?本文复盘一次真实的故障排查经历,分享如何用AI将日志定位时间从2小时缩短到10分钟,包含具体工具和操作步骤。

查看更多

利用技术优势,程序员如何挣零花钱?

作为程序员,你可以通过自由职业、技术写作、在线授课、开源项目和技术顾问等多种方式,在工作之余轻松赚取零花钱。本文详细介绍了每种方法的具体步骤和技巧,帮助你充分利用技术优势,实现额外收入。

查看更多

比特币文摘上线

第一次听说比特币是在年初,当时了解到的价格是$25左右,没有看任何技术资料,就想当然的以为是电子玩具或者庞氏骗局。

查看更多