-
Notifications
You must be signed in to change notification settings - Fork 9
Expand file tree
/
Copy pathaccount_test.go
More file actions
125 lines (106 loc) · 2.99 KB
/
Copy pathaccount_test.go
File metadata and controls
125 lines (106 loc) · 2.99 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
package ethereum
import (
"bufio"
"crypto/ecdsa"
"encoding/hex"
"io"
"os"
"strings"
"testing"
"github.com/ethereum/go-ethereum/crypto"
"github.com/stretchr/testify/assert"
)
var keys = []string{
"0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80",
"0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d",
"0x5de4111afa1a4b94908f83103eb1f1706367c2e68ca870fc3fb9a804cdab365a",
"0x7c852118294e51e653712a81e05800f419141751be58f605c371e15141b007a6",
"0x47e179ec197488593b187f80a00eb0da91f1b9d0b13f8733639f19c30a34926a",
"0x8b3a350cf5c34c9194ca85829a2df0ec3153be0318b5e2d3348e872092edffba",
"0x92db14e403b83dfe3df233f83dfa3a0d7096f21ca9b0d6d6b8d88b2b4ec1564e",
"0x4bbbf85ce3377467afe5d46f804f221813b2bb87f24d81f60f1fcdbf7cbf4356",
"0xdbda1821b80551c9d65939329250298aa3472ba22feea921c0cf5d620ea67b97",
"0x2a871d0798f97d79848a013d4936a73bf4cc922c825d33c1cf7073dff6d409c6",
}
var keyFilePaths = []string{
"transfer/eth/keystore/keys",
"invoke/eth/keystore/keys",
}
const TotalAccount = 2000000
func TestAccount(t *testing.T) {
for _, key := range keys {
sk, err := crypto.HexToECDSA(strings.TrimPrefix(key, "0x"))
assert.Nil(t, err)
addr := crypto.PubkeyToAddress(sk.PublicKey)
t.Logf("address is: %s", addr.String())
}
}
func TestGenerateAccount(t *testing.T) {
var dstFile *os.File
var err error
for i, keyFilePath := range keyFilePaths {
if i == 0 {
dstFile, err = os.OpenFile(keyFilePath, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)
assert.Nil(t, err)
var sk *ecdsa.PrivateKey
for i := 0; i < TotalAccount; i++ {
sk, err = crypto.GenerateKey()
assert.Nil(t, err)
//t.Logf("key is: %+v", *sk)
privKey := hex.EncodeToString(crypto.FromECDSA(sk))
//t.Logf("priv key: %s", privKey)
_, err = dstFile.Write([]byte(privKey))
assert.Nil(t, err)
_, err = dstFile.Write([]byte("\n"))
assert.Nil(t, err)
}
err = dstFile.Close()
assert.Nil(t, err)
} else {
f, err := os.OpenFile(keyFilePath, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)
assert.Nil(t, err)
_, err = io.Copy(f, dstFile)
assert.Nil(t, err)
err = f.Close()
assert.Nil(t, err)
}
}
}
func TestSplitAndSaveKeys(t *testing.T) {
srcFile, err := os.Open("./keys")
if err != nil {
panic(err)
}
defer srcFile.Close()
var keys []string
scanner := bufio.NewScanner(srcFile)
for scanner.Scan() {
line := scanner.Text()
keys = append(keys, line)
}
if err := scanner.Err(); err != nil {
panic(err)
}
totalKeys := len(keys)
partSize := totalKeys / 3
part1 := keys[:partSize]
part2 := keys[partSize : 2*partSize]
part3 := keys[2*partSize:]
paths := []string{
"stability-erc20/eth/keystore/keys",
"stability-transfer/eth/keystore/keys",
"stability-uniswap/eth/keystore/keys"}
for i, part := range [][]string{part1, part2, part3} {
file, err := os.Create(paths[i])
if err != nil {
panic(err)
}
defer file.Close()
for _, key := range part {
_, err := file.WriteString(key + "\n")
if err != nil {
panic(err)
}
}
}
}