undefined: secp256k1.RecoverPubkey


在使用 gotron-sdk 开发过程中,跨平台打包编译的时候,遇到了这个问题

# github.com/fbsobreira/gotron-sdk/pkg/keystore
vendor\github.com\fbsobreira\gotron-sdk\pkg\keystore\recover.go:17:33: undefined: secp256k1.RecoverPubkey

在 mod 添加以下代码即可

replace github.com/fbsobreira/gotron-sdk v0.0.0-20230907131216-1e824406fe8c => github.com/sunbankio/gotron-sdk v0.0.0-20231003155243-a269b0d040c3

参考:https://github.com/fbsobreira/gotron-sdk/pull/107


Fast RLP encoder/decoder


https://github.com/umbracle/fastrlp

FastRlp 不使用反射来避免瓶颈。它提供可以编码或解码为任何特定类型的单值原语
编码:

a := &fastrlp.Arena{}

// Encode a uint
v := a.NewUint(300)
buf := v.MarshalTo(nil)

// Encode an array
v = a.NewArray()
v.Set(a.NewUint(300))
buf = v.MarshalTo(nil)

您可以在此处找到更多示例。

解码:

p := &fastrlp.Parser{}
v, err := p.Parse([]byte{0x01})
if err != nil {
    panic(err)
}

num, err := v.GetUint64()
if err != nil {
    panic(err)
}
fmt.Println(num)