Skip to content

Commit 9949cca

Browse files
authored
Merge pull request #87 from 0xcregis/feature/chaincode
Feature/chaincode
2 parents cc52b3c + 9819b90 commit 9949cca

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

51 files changed

+1462
-678
lines changed

blockchain/chain/gw.go

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,42 +9,44 @@ import (
99
"github.com/0xcregis/easynode/blockchain/chain/polygonpos"
1010
"github.com/0xcregis/easynode/blockchain/chain/tron"
1111
"github.com/0xcregis/easynode/blockchain/chain/xrp"
12+
"github.com/0xcregis/easynode/common/chain"
13+
"github.com/sunjiangjun/xlog"
1214
)
1315

14-
func NewChain(blockchain int64) blockchain.ChainConn {
15-
if blockchain == 200 {
16+
func NewChain(blockchain int64, log *xlog.XLog) blockchain.ChainConn {
17+
if chain.GetChainCode(blockchain, "ETH", log) {
1618
//eth
1719
return ether.NewChainClient()
18-
} else if blockchain == 205 {
20+
} else if chain.GetChainCode(blockchain, "TRON", log) {
1921
//tron
2022
return tron.NewChainClient()
21-
} else if blockchain == 201 {
23+
} else if chain.GetChainCode(blockchain, "POLYGON", log) {
2224
//polygon-pos
2325
return polygonpos.NewChainClient()
24-
} else if blockchain == 202 {
26+
} else if chain.GetChainCode(blockchain, "BSC", log) {
2527
//bnb
2628
return bnb.NewChainClient()
27-
} else if blockchain == 301 {
29+
} else if chain.GetChainCode(blockchain, "FIL", log) {
2830
//file-coin
2931
return filecoin.NewChainClient()
30-
} else if blockchain == 300 {
32+
} else if chain.GetChainCode(blockchain, "BTC", log) {
3133
//btc
3234
return btc.NewChainClient()
33-
} else if blockchain == 310 {
35+
} else if chain.GetChainCode(blockchain, "XRP", log) {
3436
//xrp
3537
return xrp.NewChainClient()
3638
} else {
3739
return nil
3840
}
3941
}
4042

41-
func NewNFT(blockchain int64) blockchain.NFT {
42-
if blockchain == 200 {
43+
func NewNFT(blockchain int64, log *xlog.XLog) blockchain.NFT {
44+
if chain.GetChainCode(blockchain, "ETH", log) {
4345
//eth
4446
return ether.NewNFTClient()
45-
} else if blockchain == 201 {
47+
} else if chain.GetChainCode(blockchain, "POLYGON", log) {
4648
return polygonpos.NewNFTClient()
47-
} else if blockchain == 202 {
49+
} else if chain.GetChainCode(blockchain, "BSC", log) {
4850
return bnb.NewNFTClient()
4951
} else {
5052
return nil

blockchain/config/configutil.go

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ import (
44
"encoding/json"
55
"io"
66
"os"
7+
8+
"github.com/tidwall/gjson"
79
)
810

911
func LoadConfig(path string) Config {
@@ -19,6 +21,29 @@ func LoadConfig(path string) Config {
1921
panic(err)
2022
}
2123
cfg := Config{}
22-
_ = json.Unmarshal(b, &cfg)
24+
err = json.Unmarshal(b, &cfg)
25+
if err != nil {
26+
panic(err)
27+
}
28+
29+
list := gjson.ParseBytes(b).Get("Nodes").Array()
30+
cfg.Cluster = make(map[int64][]*NodeCluster)
31+
for _, v := range list {
32+
chainCode := v.Get("BlockChain").Int()
33+
var node NodeCluster
34+
err := json.Unmarshal([]byte(v.String()), &node)
35+
if err != nil {
36+
panic(err)
37+
}
38+
39+
if m, ok := cfg.Cluster[chainCode]; ok {
40+
m = append(m, &node)
41+
cfg.Cluster[chainCode] = m
42+
} else {
43+
nodeList := []*NodeCluster{&node}
44+
cfg.Cluster[chainCode] = nodeList
45+
}
46+
}
47+
2348
return cfg
2449
}

blockchain/service/bnb/bnb.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"github.com/0xcregis/easynode/blockchain"
1212
"github.com/0xcregis/easynode/blockchain/chain"
1313
"github.com/0xcregis/easynode/blockchain/config"
14+
"github.com/0xcregis/easynode/common/util"
1415
"github.com/sunjiangjun/xlog"
1516
"github.com/tidwall/gjson"
1617
)
@@ -256,6 +257,7 @@ func (e *Bnb) GetBlockByNumber(chainCode int64, number string, flag bool) (strin
256257
]
257258
}
258259
`
260+
number, _ = util.Int2Hex(number)
259261
req = fmt.Sprintf(req, number, flag)
260262
return e.SendReq(chainCode, req)
261263
}
@@ -284,12 +286,12 @@ func (e *Bnb) SendJsonRpc(chainCode int64, req string) (string, error) {
284286
}
285287

286288
func NewNftBnb(cluster []*config.NodeCluster, blockchain int64, xlog *xlog.XLog) blockchain.NftApi {
287-
nftClient := chain.NewNFT(blockchain)
289+
nftClient := chain.NewNFT(blockchain, xlog)
288290
if nftClient == nil {
289291
return nil
290292
}
291293

292-
chain.NewNFT(blockchain)
294+
chain.NewNFT(blockchain, xlog)
293295
e := &Bnb{
294296
log: xlog,
295297
nodeCluster: cluster,
@@ -300,7 +302,7 @@ func NewNftBnb(cluster []*config.NodeCluster, blockchain int64, xlog *xlog.XLog)
300302
}
301303

302304
func NewBnb(cluster []*config.NodeCluster, blockchain int64, xlog *xlog.XLog) blockchain.API {
303-
blockChainClient := chain.NewChain(blockchain)
305+
blockChainClient := chain.NewChain(blockchain, xlog)
304306
if blockChainClient == nil {
305307
return nil
306308
}

blockchain/service/btc/btc.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ func (e *Btc) SendJsonRpc(chainCode int64, req string) (string, error) {
126126
}
127127

128128
func NewBtc(cluster []*config.NodeCluster, blockchain int64, xlog *xlog.XLog) blockchain.API {
129-
blockChainClient := chain.NewChain(blockchain)
129+
blockChainClient := chain.NewChain(blockchain, xlog)
130130
if blockChainClient == nil {
131131
return nil
132132
}

blockchain/service/ether/ether.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313
"github.com/0xcregis/easynode/blockchain"
1414
"github.com/0xcregis/easynode/blockchain/chain"
1515
"github.com/0xcregis/easynode/blockchain/config"
16+
"github.com/0xcregis/easynode/common/util"
1617
"github.com/gorilla/websocket"
1718
"github.com/sunjiangjun/xlog"
1819
"github.com/tidwall/gjson"
@@ -275,6 +276,8 @@ func (e *Ether) GetBlockByNumber(chainCode int64, number string, flag bool) (str
275276
]
276277
}
277278
`
279+
280+
number, _ = util.Int2Hex(number)
278281
req = fmt.Sprintf(req, number, flag)
279282
return e.SendReq(chainCode, req)
280283
}
@@ -303,12 +306,12 @@ func (e *Ether) SendJsonRpc(chainCode int64, req string) (string, error) {
303306
}
304307

305308
func NewNftEth(cluster []*config.NodeCluster, blockchain int64, xlog *xlog.XLog) blockchain.NftApi {
306-
nftClient := chain.NewNFT(blockchain)
309+
nftClient := chain.NewNFT(blockchain, xlog)
307310
if nftClient == nil {
308311
return nil
309312
}
310313

311-
chain.NewNFT(blockchain)
314+
chain.NewNFT(blockchain, xlog)
312315
e := &Ether{
313316
log: xlog,
314317
nodeCluster: cluster,
@@ -319,7 +322,7 @@ func NewNftEth(cluster []*config.NodeCluster, blockchain int64, xlog *xlog.XLog)
319322
}
320323

321324
func NewEth(cluster []*config.NodeCluster, blockchain int64, xlog *xlog.XLog) blockchain.API {
322-
blockChainClient := chain.NewChain(blockchain)
325+
blockChainClient := chain.NewChain(blockchain, xlog)
323326
if blockChainClient == nil {
324327
return nil
325328
}

blockchain/service/ether/ether_test.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,16 @@ func TestEther_TokenBalance(t *testing.T) {
6060
}
6161
}
6262

63+
func TestEther_Nonce(t *testing.T) {
64+
s := Init()
65+
resp, err := s.Nonce(200, "0xae2Fc483527B8EF99EB5D9B44875F005ba1FaE13", "latest")
66+
if err != nil {
67+
t.Error(err)
68+
} else {
69+
t.Log(resp)
70+
}
71+
}
72+
6373
func TestEther_GetLatestBlock(t *testing.T) {
6474
s := Init()
6575
resp, err := s.LatestBlock(200)

blockchain/service/filecoin/filecoin.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ func (e *FileCoin) Token(chainCode int64, contractAddr string, abi string, eip s
3030
}
3131

3232
func NewFileCoin(cluster []*config.NodeCluster, blockchain int64, xlog *xlog.XLog) blockchain.API {
33-
blockChainClient := chain.NewChain(blockchain)
33+
blockChainClient := chain.NewChain(blockchain, xlog)
3434
if blockChainClient == nil {
3535
return nil
3636
}

blockchain/service/gw.go

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,34 +10,35 @@ import (
1010
"github.com/0xcregis/easynode/blockchain/service/polygon"
1111
"github.com/0xcregis/easynode/blockchain/service/tron"
1212
"github.com/0xcregis/easynode/blockchain/service/xrp"
13+
"github.com/0xcregis/easynode/common/chain"
1314
"github.com/sunjiangjun/xlog"
1415
)
1516

1617
func NewApi(blockchain int64, cluster []*config.NodeCluster, xlog *xlog.XLog) blockchain.API {
17-
if blockchain == 200 {
18+
if chain.GetChainCode(blockchain, "ETH", xlog) {
1819
return ether.NewEth(cluster, blockchain, xlog)
19-
} else if blockchain == 205 {
20+
} else if chain.GetChainCode(blockchain, "TRON", xlog) {
2021
return tron.NewTron(cluster, blockchain, xlog)
21-
} else if blockchain == 201 {
22+
} else if chain.GetChainCode(blockchain, "POLYGON", xlog) {
2223
return polygon.NewPolygonPos(cluster, blockchain, xlog)
23-
} else if blockchain == 202 {
24+
} else if chain.GetChainCode(blockchain, "BSC", xlog) {
2425
return bnb.NewBnb(cluster, blockchain, xlog)
25-
} else if blockchain == 300 {
26+
} else if chain.GetChainCode(blockchain, "BTC", xlog) {
2627
return btc.NewBtc(cluster, blockchain, xlog)
27-
} else if blockchain == 301 {
28+
} else if chain.GetChainCode(blockchain, "FIL", xlog) {
2829
return filecoin.NewFileCoin(cluster, blockchain, xlog)
29-
} else if blockchain == 310 {
30+
} else if chain.GetChainCode(blockchain, "XRP", xlog) {
3031
return xrp.NewXRP(cluster, blockchain, xlog)
3132
}
3233
return nil
3334
}
3435

3536
func NewNftApi(blockchain int64, cluster []*config.NodeCluster, xlog *xlog.XLog) blockchain.NftApi {
36-
if blockchain == 200 {
37+
if chain.GetChainCode(blockchain, "ETH", xlog) {
3738
return ether.NewNftEth(cluster, blockchain, xlog)
38-
} else if blockchain == 201 {
39+
} else if chain.GetChainCode(blockchain, "POLYGON", xlog) {
3940
return polygon.NewNftPolygonPos(cluster, blockchain, xlog)
40-
} else if blockchain == 202 {
41+
} else if chain.GetChainCode(blockchain, "BSC", xlog) {
4142
return bnb.NewNftBnb(cluster, blockchain, xlog)
4243
}
4344
return nil

0 commit comments

Comments
 (0)