Skip to content

Commit cd538df

Browse files
Feature: endorsement forging
1 parent 08693df commit cd538df

File tree

3 files changed

+73
-2
lines changed

3 files changed

+73
-2
lines changed

tools/forge/endorment.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package forge
22

33
import (
44
"bytes"
5+
"encoding/binary"
56

67
"github.com/dipdup-net/go-lib/node"
78
"github.com/dipdup-net/go-lib/tools/types"
@@ -26,7 +27,9 @@ func Endorsement(endorsement node.Endorsement, branch string) ([]byte, error) {
2627
if _, err := buf.Write(tag); err != nil {
2728
return nil, err
2829
}
29-
level, err := ForgeInt(types.NewBigInt(int64(endorsement.Level)))
30+
31+
level := make([]byte, 4)
32+
binary.BigEndian.PutUint32(level, uint32(endorsement.Level))
3033
if err != nil {
3134
return nil, err
3235
}

tools/forge/endorment_test.go

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
package forge
2+
3+
import (
4+
"encoding/hex"
5+
"testing"
6+
7+
"github.com/dipdup-net/go-lib/node"
8+
"github.com/stretchr/testify/assert"
9+
)
10+
11+
func TestEndorsement(t *testing.T) {
12+
tests := []struct {
13+
name string
14+
endorsement node.Endorsement
15+
branch string
16+
want string
17+
wantErr bool
18+
}{
19+
{
20+
name: "test 1",
21+
endorsement: node.Endorsement{
22+
Level: 751292,
23+
Metadata: &node.EndorsementMetadata{},
24+
},
25+
branch: "BMbpxQAU7Jat7g9ZnKrP3brgqFX6r2VX8PPXCxNbFZeURA6DbEF",
26+
want: "f8bc58c3ceaa7aaaa09d2892d0ee234231ffe46b484e5f7e7b32b5bfd618b67200000b76bc",
27+
}, {
28+
name: "test 2",
29+
endorsement: node.Endorsement{
30+
Level: 751179,
31+
Metadata: &node.EndorsementMetadata{},
32+
},
33+
branch: "BM2JkusQmT885mqjKiJXfMJrgQXZTwoEsCM8tkuvGyJLPrSw2ih",
34+
want: "ac9f7b86a813cf29a18a16bda49a434c92a5a583f1630f0ad2b8224b7b26f05a00000b764b",
35+
}, {
36+
name: "test 3",
37+
endorsement: node.Endorsement{
38+
Level: 751447,
39+
Metadata: &node.EndorsementMetadata{},
40+
},
41+
branch: "BLp1dxsyPLc58x4cSMKGVevdQfgo9VBHy46kqnhsJSrNgteDPex",
42+
want: "90b48e1e6ff05a6a4bd2527dbb9853a5e152906847bc4c3eda57bd1e5742a39900000b7757",
43+
}, {
44+
name: "test 4",
45+
endorsement: node.Endorsement{
46+
Level: 1479809,
47+
Metadata: &node.EndorsementMetadata{},
48+
},
49+
branch: "BL38RNz32eAVhgvV5bUMWUxGMq2v2wkst9UaN7CbW7hLC6THCQ6",
50+
want: "2acaf73c5f06c812083f5989ea19d1b2a4d71335f988233c5145814d695b3b4c0000169481",
51+
},
52+
}
53+
for _, tt := range tests {
54+
t.Run(tt.name, func(t *testing.T) {
55+
got, err := Endorsement(tt.endorsement, tt.branch)
56+
if (err != nil) != tt.wantErr {
57+
t.Errorf("Endorsement() error = %v, wantErr %v", err, tt.wantErr)
58+
return
59+
}
60+
assert.Equal(t, tt.want, hex.EncodeToString(got))
61+
})
62+
}
63+
}

tools/forge/forge.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"strconv"
88

99
"github.com/dipdup-net/go-lib/tools/types"
10+
"github.com/ebellocchia/go-base58"
1011
"github.com/pkg/errors"
1112
)
1213

@@ -99,7 +100,11 @@ func ForgeBool(value bool) []byte {
99100

100101
// ForgeString -
101102
func ForgeString(value string) ([]byte, error) {
102-
return nil, nil
103+
decoded, err := base58.New(base58.AlphabetBitcoin).Decode(value)
104+
if err != nil {
105+
return nil, err
106+
}
107+
return decoded[2 : len(decoded)-4], nil
103108
}
104109

105110
func reverse(arr []string) []string {

0 commit comments

Comments
 (0)