EOS な serialization を Go で

これ と同じことを Go でやってみましょうの回。

EOS Canada の

を使って実装します。

package main

import (
	"bytes"
	"crypto/sha256"
	"encoding/hex"
	"fmt"
	"log"

	eos "github.com/eoscanada/eos-go"
)

func main() {
	var buf bytes.Buffer
	encoder := eos.NewEncoder(&buf)

	n := eos.AN("motokichi")
	a, err := eos.NewAssetFromString("21000000 POYO")
	if err != nil {
		log.Fatal(err)
	}
	var i uint64 = 1231006505
	s := "poyo!"
	b := false

	if err := encoder.Encode(n); err != nil {
		log.Fatal(err)
	}
	if err := encoder.Encode(a); err != nil {
		log.Fatal(err)
	}
	if err := encoder.Encode(i); err != nil {
		log.Fatal(err)
	}
	if err := encoder.Encode(s); err != nil {
		log.Fatal(err)
	}
	if err := encoder.Encode(b); err != nil {
		log.Fatal(err)
	}

	hashed := hash(buf.Bytes())

	fmt.Println(hex.EncodeToString(hashed))
}

func hash(data []byte) []byte {
	h := sha256.Sum256(data)
	return h[:]
}

実行してみます。

$ go run main.go
095207f69473db5e4dd7329d3f7838bf3664a6ca9465fe6cf33e52afcf5a61ef

無事前回と同じ結果が出力されました。

おしまい。

comments powered by Disqus