Commit a9d24f4d authored by 贾浩@五瓣科技's avatar 贾浩@五瓣科技

fix: gen merkle proof

parent f0d42245
......@@ -241,7 +241,7 @@ func (w *Witness) CommitMT(objects []*witnessv1.MinerObject) (root common.Hash,
merkleProofs := make(tree.Proofs, 0)
dbProofs := make([]byte, 0)
for _, object := range objects {
payload := append(common.HexToAddress(object.Miner).Bytes(), big.NewInt(0).SetUint64(object.Workload).Bytes()...)
payload := append(common.HexToAddress(object.Miner).Bytes(), common.LeftPadBytes(big.NewInt(0).SetUint64(object.Workload).Bytes(), 32)...)
_proof := crypto.Keccak256Hash(payload)
merkleProofs = append(merkleProofs, _proof)
dbProofs = append(dbProofs, _proof[:]...)
......
package tree
import (
"encoding/hex"
"math/big"
"testing"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/crypto"
)
func TestMT(t *testing.T) {
proofs := make([]common.Hash, 0)
proofs = append(proofs, common.HexToHash("0x1"))
proofs = append(proofs, common.HexToHash("0x2"))
proofs = append(proofs, common.HexToHash("0x3"))
address := common.HexToAddress("0x1f9090aaE28b8a3dCeaDf281B0F12828e676c326")
amount := big.NewInt(0).SetUint64(10)
payload := append(address.Bytes(), common.LeftPadBytes(amount.Bytes(), 32)...)
data := crypto.Keccak256Hash(payload)
proofs = append(proofs, data)
tree, err := NewMerkleTree(proofs)
if err != nil {
t.Fatal(err)
}
mproofs, err := tree.GetProof(data)
if err != nil {
t.Fatal(err)
}
t.Log(tree.GetRoot().Hex())
for _, el := range mproofs {
t.Log(hex.EncodeToString(el[:]))
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment