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")
}
标签 :

相关文章

如何解决拖延症

从有记事时起,印象中拖延症就始终伴随着我。上学时家庭作业拖到快睡觉时候再熬夜做,掐着点出门导致经常迟到;上班后每天、每周的总结总是拖到最后一刻提交;深夜有时候困得不行还会漫无目的的上网来拖延睡觉……

查看更多

图书城整体迁移至阿里云完毕

经过一个多星期的调试,图书城网站及所有后台程序这周已经完全迁移到阿里云上去了。 之前的云服务器60G硬盘不出意料的在迁移2天后就满了,所以刚又增加了200G磁盘空间,和第一块数据磁盘一样,仍需要另行挂载。

查看更多

尤雨溪宣布发布 VoidZero: 下一代 JavaScript 工具链

Vue.js 和 Vite 的作者尤雨溪宣布创立 VoidZero Inc.,致力于为 JavaScript 生态系统构建开源、高性能、统一的开发工具链,并成功完成由 Accel 领投的 460 万美元种子轮融资。

查看更多