Commit f0044a9a authored by Alexader's avatar Alexader

feat(*): revise contracts and related plugin handling to adapt did

parent 8f527076
...@@ -8,11 +8,10 @@ import ( ...@@ -8,11 +8,10 @@ import (
"strings" "strings"
"time" "time"
"github.com/hashicorp/go-hclog"
"github.com/Rican7/retry" "github.com/Rican7/retry"
"github.com/Rican7/retry/strategy" "github.com/Rican7/retry/strategy"
"github.com/golang/protobuf/proto" "github.com/golang/protobuf/proto"
"github.com/hashicorp/go-hclog"
"github.com/hashicorp/go-plugin" "github.com/hashicorp/go-plugin"
"github.com/hyperledger/fabric-chaincode-go/shim" "github.com/hyperledger/fabric-chaincode-go/shim"
"github.com/hyperledger/fabric-protos-go/common" "github.com/hyperledger/fabric-protos-go/common"
...@@ -22,6 +21,7 @@ import ( ...@@ -22,6 +21,7 @@ import (
"github.com/hyperledger/fabric-sdk-go/pkg/common/providers/fab" "github.com/hyperledger/fabric-sdk-go/pkg/common/providers/fab"
"github.com/hyperledger/fabric/common/util" "github.com/hyperledger/fabric/common/util"
"github.com/meshplus/bitxhub-model/pb" "github.com/meshplus/bitxhub-model/pb"
"github.com/meshplus/bitxid"
"github.com/meshplus/pier/pkg/plugins" "github.com/meshplus/pier/pkg/plugins"
) )
...@@ -56,14 +56,14 @@ type ContractMeta struct { ...@@ -56,14 +56,14 @@ type ContractMeta struct {
} }
type Client struct { type Client struct {
meta *ContractMeta meta *ContractMeta
consumer *Consumer consumer *Consumer
eventC chan *pb.IBTP eventC chan *pb.IBTP
pierId string appchainID string
name string name string
outMeta map[string]uint64 outMeta map[string]uint64
ticker *time.Ticker ticker *time.Ticker
done chan bool done chan bool
} }
type CallFunc struct { type CallFunc struct {
...@@ -71,7 +71,7 @@ type CallFunc struct { ...@@ -71,7 +71,7 @@ type CallFunc struct {
Args [][]byte `json:"args"` Args [][]byte `json:"args"`
} }
func (c *Client) Initialize(configPath, pierId string, extra []byte) error { func (c *Client) Initialize(configPath, appchainID string, extra []byte) error {
eventC := make(chan *pb.IBTP) eventC := make(chan *pb.IBTP)
fabricConfig, err := UnmarshalConfig(configPath) fabricConfig, err := UnmarshalConfig(configPath)
if err != nil { if err != nil {
...@@ -94,7 +94,7 @@ func (c *Client) Initialize(configPath, pierId string, extra []byte) error { ...@@ -94,7 +94,7 @@ func (c *Client) Initialize(configPath, pierId string, extra []byte) error {
m = make(map[string]uint64) m = make(map[string]uint64)
} }
mgh, err := newFabricHandler(contractmeta.EventFilter, eventC, pierId) mgh, err := newFabricHandler(contractmeta.EventFilter, eventC, appchainID)
if err != nil { if err != nil {
return err return err
} }
...@@ -108,7 +108,7 @@ func (c *Client) Initialize(configPath, pierId string, extra []byte) error { ...@@ -108,7 +108,7 @@ func (c *Client) Initialize(configPath, pierId string, extra []byte) error {
c.consumer = csm c.consumer = csm
c.eventC = eventC c.eventC = eventC
c.meta = contractmeta c.meta = contractmeta
c.pierId = pierId c.appchainID = appchainID
c.name = fabricConfig.Name c.name = fabricConfig.Name
c.outMeta = m c.outMeta = m
c.ticker = time.NewTicker(2 * time.Second) c.ticker = time.NewTicker(2 * time.Second)
...@@ -161,11 +161,11 @@ func (c *Client) polling() { ...@@ -161,11 +161,11 @@ func (c *Client) polling() {
} }
for _, ev := range evs { for _, ev := range evs {
ev.Proof = proof ev.Proof = proof
c.eventC <- ev.Convert2IBTP(c.pierId, pb.IBTP_INTERCHAIN) c.eventC <- ev.Convert2IBTP(c.appchainID, pb.IBTP_INTERCHAIN)
if c.outMeta == nil { if c.outMeta == nil {
c.outMeta = make(map[string]uint64) c.outMeta = make(map[string]uint64)
} }
c.outMeta[ev.DstChainID]++ c.outMeta[string(bitxid.DID(ev.DstContractDID).GetChainDID())]++
} }
case <-c.done: case <-c.done:
logger.Info("Stop long polling") logger.Info("Stop long polling")
...@@ -204,12 +204,12 @@ func (c *Client) getProof(response channel.Response) ([]byte, error) { ...@@ -204,12 +204,12 @@ func (c *Client) getProof(response channel.Response) ([]byte, error) {
var err error var err error
proof, err = handle(response) proof, err = handle(response)
if err != nil { if err != nil {
logger.Error("can't get proof", "err", err.Error()) logger.Error("Can't get proof", "error", err.Error())
return err return err
} }
return nil return nil
}, strategy.Wait(2*time.Second)); err != nil { }, strategy.Wait(2*time.Second)); err != nil {
logger.Error("get proof retry failed", "err", err.Error()) logger.Error("Can't get proof", "error", err.Error())
} }
return proof, nil return proof, nil
...@@ -342,7 +342,7 @@ func (c *Client) InvokeInterchain(from string, index uint64, destAddr string, ca ...@@ -342,7 +342,7 @@ func (c *Client) InvokeInterchain(from string, index uint64, destAddr string, ca
return nil return nil
}, strategy.Wait(2*time.Second)); err != nil { }, strategy.Wait(2*time.Second)); err != nil {
logger.Error("Can't send rollback ibtp back to bitxhub", "err", err.Error()) logger.Error("Can't send rollback ibtp back to bitxhub", "error", err.Error())
} }
if err != nil { if err != nil {
...@@ -372,7 +372,11 @@ func (c *Client) GetOutMessage(to string, idx uint64) (*pb.IBTP, error) { ...@@ -372,7 +372,11 @@ func (c *Client) GetOutMessage(to string, idx uint64) (*pb.IBTP, error) {
return nil, err return nil, err
} }
return c.unpackIBTP(&response, pb.IBTP_INTERCHAIN) proof, err := c.getProof(response)
if err != nil {
return nil, err
}
return c.unpackIBTP(&response, pb.IBTP_INTERCHAIN, proof)
} }
func (c *Client) GetInMessage(from string, index uint64) ([][]byte, error) { func (c *Client) GetInMessage(from string, index uint64) ([][]byte, error) {
...@@ -489,13 +493,13 @@ func (c Client) InvokeIndexUpdate(from string, index uint64, category pb.IBTP_Ca ...@@ -489,13 +493,13 @@ func (c Client) InvokeIndexUpdate(from string, index uint64, category pb.IBTP_Ca
return &res, response, nil return &res, response, nil
} }
func (c *Client) unpackIBTP(response *channel.Response, ibtpType pb.IBTP_Type) (*pb.IBTP, error) { func (c *Client) unpackIBTP(response *channel.Response, ibtpType pb.IBTP_Type, proof []byte) (*pb.IBTP, error) {
ret := &Event{} ret := &Event{}
if err := json.Unmarshal(response.Payload, ret); err != nil { if err := json.Unmarshal(response.Payload, ret); err != nil {
return nil, err return nil, err
} }
ret.Proof = proof
return ret.Convert2IBTP(c.pierId, ibtpType), nil return ret.Convert2IBTP(c.appchainID, ibtpType), nil
} }
func (c *Client) unpackMap(response channel.Response) (map[string]uint64, error) { func (c *Client) unpackMap(response channel.Response) (map[string]uint64, error) {
......
...@@ -8,24 +8,24 @@ import ( ...@@ -8,24 +8,24 @@ import (
"github.com/cloudflare/cfssl/log" "github.com/cloudflare/cfssl/log"
"github.com/meshplus/bitxhub-model/pb" "github.com/meshplus/bitxhub-model/pb"
"github.com/meshplus/bitxid"
) )
type Event struct { type Event struct {
Index uint64 `json:"index"` Index uint64 `json:"index"`
DstChainID string `json:"dst_chain_id"` DstContractDID string `json:"dst_contract_did"`
SrcContractID string `json:"src_contract_id"` SrcContractID string `json:"src_contract_id"`
DstContractID string `json:"dst_contract_id"` Func string `json:"func"`
Func string `json:"func"` Args string `json:"args"`
Args string `json:"args"` Callback string `json:"callback"`
Callback string `json:"callback"` Argscb string `json:"argscb"`
Argscb string `json:"argscb"` Rollback string `json:"rollback"`
Rollback string `json:"rollback"` Argsrb string `json:"argsrb"`
Argsrb string `json:"argsrb"` Proof []byte `json:"proof"`
Proof []byte `json:"proof"` Extra []byte `json:"extra"`
Extra []byte `json:"extra"`
} }
func (ev *Event) Convert2IBTP(from string, ibtpType pb.IBTP_Type) *pb.IBTP { func (ev *Event) Convert2IBTP(srcMethod string, ibtpType pb.IBTP_Type) *pb.IBTP {
pd, err := ev.encryptPayload() pd, err := ev.encryptPayload()
if err != nil { if err != nil {
log.Fatalf("Get ibtp payload :%s", err) log.Fatalf("Get ibtp payload :%s", err)
...@@ -47,8 +47,8 @@ func (ev *Event) Convert2IBTP(from string, ibtpType pb.IBTP_Type) *pb.IBTP { ...@@ -47,8 +47,8 @@ func (ev *Event) Convert2IBTP(from string, ibtpType pb.IBTP_Type) *pb.IBTP {
} }
return &pb.IBTP{ return &pb.IBTP{
From: from, From: srcMethod,
To: ev.DstChainID, To: string(bitxid.DID(ev.DstContractDID).GetChainDID()),
Index: ev.Index, Index: ev.Index,
Type: ibtpType, Type: ibtpType,
Timestamp: time.Now().UnixNano(), Timestamp: time.Now().UnixNano(),
...@@ -70,7 +70,7 @@ func handleArgs(args string) [][]byte { ...@@ -70,7 +70,7 @@ func handleArgs(args string) [][]byte {
func (ev *Event) encryptPayload() ([]byte, error) { func (ev *Event) encryptPayload() ([]byte, error) {
content := &pb.Content{ content := &pb.Content{
SrcContractId: ev.SrcContractID, SrcContractId: ev.SrcContractID,
DstContractId: ev.DstContractID, DstContractId: bitxid.DID(ev.DstContractDID).GetAddress(),
Func: ev.Func, Func: ev.Func,
Args: handleArgs(ev.Args), Args: handleArgs(ev.Args),
Callback: ev.Callback, Callback: ev.Callback,
......
...@@ -26,16 +26,15 @@ const ( ...@@ -26,16 +26,15 @@ const (
type Broker struct{} type Broker struct{}
type Event struct { type Event struct {
Index uint64 `json:"index"` Index uint64 `json:"index"`
DstChainID string `json:"dst_chain_id"` DstContractDID string `json:"dst_contract_did"`
SrcContractID string `json:"src_contract_id"` SrcContractID string `json:"src_contract_id"`
DstContractID string `json:"dst_contract_id"` Func string `json:"func"`
Func string `json:"func"` Args string `json:"args"`
Args string `json:"args"` Callback string `json:"callback"`
Callback string `json:"callback"` Argscb string `json:"argscb"`
Argscb string `json:"argscb"` Rollback string `json:"rollback"`
Rollback string `json:"rollback"` Argsrb string `json:"argsrb"`
Argsrb string `json:"argsrb"`
} }
type CallFunc struct { type CallFunc struct {
...@@ -129,8 +128,7 @@ func (broker *Broker) initialize(stub shim.ChaincodeStubInterface) pb.Response { ...@@ -129,8 +128,7 @@ func (broker *Broker) initialize(stub shim.ChaincodeStubInterface) pb.Response {
} }
// EmitInterchainEvent // EmitInterchainEvent
// address to, // string destContractDID,
// address tid,
// string func, // string func,
// string args, // string args,
// string callback; // string callback;
...@@ -138,18 +136,22 @@ func (broker *Broker) initialize(stub shim.ChaincodeStubInterface) pb.Response { ...@@ -138,18 +136,22 @@ func (broker *Broker) initialize(stub shim.ChaincodeStubInterface) pb.Response {
// string rollback; // string rollback;
// string argsRb; // string argsRb;
func (broker *Broker) EmitInterchainEvent(stub shim.ChaincodeStubInterface, args []string) pb.Response { func (broker *Broker) EmitInterchainEvent(stub shim.ChaincodeStubInterface, args []string) pb.Response {
if len(args) != 8 { if len(args) != 7 {
return shim.Error("incorrect number of arguments, expecting 8") return shim.Error("incorrect number of arguments, expecting 7")
} }
destChainID := args[0] destContractDID := args[0]
destChainMethod := parseMethod(destContractDID)
if destChainMethod == "" {
return ErrInvalidDID(destContractDID)
}
outMeta, err := broker.getMap(stub, outterMeta) outMeta, err := broker.getMap(stub, outterMeta)
if err != nil { if err != nil {
return shim.Error(err.Error()) return shim.Error(err.Error())
} }
if _, ok := outMeta[destChainID]; !ok { if _, ok := outMeta[destChainMethod]; !ok {
outMeta[destChainID] = 0 outMeta[destChainMethod] = 0
} }
cid, err := getChaincodeID(stub) cid, err := getChaincodeID(stub)
...@@ -158,19 +160,18 @@ func (broker *Broker) EmitInterchainEvent(stub shim.ChaincodeStubInterface, args ...@@ -158,19 +160,18 @@ func (broker *Broker) EmitInterchainEvent(stub shim.ChaincodeStubInterface, args
} }
tx := &Event{ tx := &Event{
Index: outMeta[destChainID] + 1, Index: outMeta[destChainMethod] + 1,
DstChainID: destChainID, DstContractDID: destContractDID,
SrcContractID: cid, SrcContractID: cid,
DstContractID: args[1], Func: args[1],
Func: args[2], Args: args[2],
Args: args[3], Callback: args[3],
Callback: args[4], Argscb: args[4],
Argscb: args[5], Rollback: args[5],
Rollback: args[6], Argsrb: args[6],
Argsrb: args[7],
} }
outMeta[tx.DstChainID]++ outMeta[destChainMethod]++
txValue, err := json.Marshal(tx) txValue, err := json.Marshal(tx)
if err != nil { if err != nil {
...@@ -178,7 +179,7 @@ func (broker *Broker) EmitInterchainEvent(stub shim.ChaincodeStubInterface, args ...@@ -178,7 +179,7 @@ func (broker *Broker) EmitInterchainEvent(stub shim.ChaincodeStubInterface, args
} }
// persist out message // persist out message
key := broker.outMsgKey(tx.DstChainID, strconv.FormatUint(tx.Index, 10)) key := broker.outMsgKey(destChainMethod, strconv.FormatUint(tx.Index, 10))
if err := stub.PutState(key, txValue); err != nil { if err := stub.PutState(key, txValue); err != nil {
return shim.Error(fmt.Errorf("persist event: %w", err).Error()) return shim.Error(fmt.Errorf("persist event: %w", err).Error())
} }
...@@ -258,15 +259,15 @@ func (broker *Broker) pollingEvent(stub shim.ChaincodeStubInterface, args []stri ...@@ -258,15 +259,15 @@ func (broker *Broker) pollingEvent(stub shim.ChaincodeStubInterface, args []stri
return shim.Error(err.Error()) return shim.Error(err.Error())
} }
events := make([]*Event, 0) events := make([]*Event, 0)
for addr, idx := range outMeta { for method, idx := range outMeta {
startPos, ok := m[addr] startPos, ok := m[method]
if !ok { if !ok {
startPos = 0 startPos = 0
} }
for i := startPos + 1; i <= idx; i++ { for i := startPos + 1; i <= idx; i++ {
eb, err := stub.GetState(broker.outMsgKey(addr, strconv.FormatUint(i, 10))) eb, err := stub.GetState(broker.outMsgKey(method, strconv.FormatUint(i, 10)))
if err != nil { if err != nil {
fmt.Printf("get out event by key %s fail", broker.outMsgKey(addr, strconv.FormatUint(i, 10))) fmt.Printf("get out event by key %s fail", broker.outMsgKey(method, strconv.FormatUint(i, 10)))
continue continue
} }
e := &Event{} e := &Event{}
...@@ -284,17 +285,17 @@ func (broker *Broker) pollingEvent(stub shim.ChaincodeStubInterface, args []stri ...@@ -284,17 +285,17 @@ func (broker *Broker) pollingEvent(stub shim.ChaincodeStubInterface, args []stri
return shim.Success(ret) return shim.Success(ret)
} }
func (broker *Broker) updateIndex(stub shim.ChaincodeStubInterface, sourceChainID, sequenceNum string, isReq bool) error { func (broker *Broker) updateIndex(stub shim.ChaincodeStubInterface, sourceChainMethod, sequenceNum string, isReq bool) error {
if isReq { if isReq {
if err := broker.checkIndex(stub, sourceChainID, sequenceNum, innerMeta); err != nil { if err := broker.checkIndex(stub, sourceChainMethod, sequenceNum, innerMeta); err != nil {
return err return err
} }
if err := broker.markInCounter(stub, sourceChainID); err != nil { if err := broker.markInCounter(stub, sourceChainMethod); err != nil {
return err return err
} }
} else { } else {
if err := broker.checkIndex(stub, sourceChainID, sequenceNum, callbackMeta); err != nil { if err := broker.checkIndex(stub, sourceChainMethod, sequenceNum, callbackMeta); err != nil {
return err return err
} }
...@@ -302,7 +303,7 @@ func (broker *Broker) updateIndex(stub shim.ChaincodeStubInterface, sourceChainI ...@@ -302,7 +303,7 @@ func (broker *Broker) updateIndex(stub shim.ChaincodeStubInterface, sourceChainI
if err != nil { if err != nil {
return err return err
} }
if err := broker.markCallbackCounter(stub, sourceChainID, idx); err != nil { if err := broker.markCallbackCounter(stub, sourceChainMethod, idx); err != nil {
return err return err
} }
} }
...@@ -315,14 +316,14 @@ func (broker *Broker) invokeIndexUpdate(stub shim.ChaincodeStubInterface, args [ ...@@ -315,14 +316,14 @@ func (broker *Broker) invokeIndexUpdate(stub shim.ChaincodeStubInterface, args [
return errorResponse("incorrect number of arguments, expecting 3") return errorResponse("incorrect number of arguments, expecting 3")
} }
sourceChainID := args[0] sourceChainMethod := args[0]
sequenceNum := args[1] sequenceNum := args[1]
isReq, err := strconv.ParseBool(args[2]) isReq, err := strconv.ParseBool(args[2])
if err != nil { if err != nil {
return errorResponse(fmt.Sprintf("cannot parse %s to bool", args[3])) return errorResponse(fmt.Sprintf("cannot parse %s to bool", args[3]))
} }
if err := broker.updateIndex(stub, sourceChainID, sequenceNum, isReq); err != nil { if err := broker.updateIndex(stub, sourceChainMethod, sequenceNum, isReq); err != nil {
return errorResponse(err.Error()) return errorResponse(err.Error())
} }
...@@ -334,7 +335,7 @@ func (broker *Broker) invokeInterchain(stub shim.ChaincodeStubInterface, args [] ...@@ -334,7 +335,7 @@ func (broker *Broker) invokeInterchain(stub shim.ChaincodeStubInterface, args []
return errorResponse("incorrect number of arguments, expecting 5") return errorResponse("incorrect number of arguments, expecting 5")
} }
sourceChainID := args[0] srcChainMethod := args[0]
sequenceNum := args[1] sequenceNum := args[1]
targetCID := args[2] targetCID := args[2]
isReq, err := strconv.ParseBool(args[3]) isReq, err := strconv.ParseBool(args[3])
...@@ -342,7 +343,7 @@ func (broker *Broker) invokeInterchain(stub shim.ChaincodeStubInterface, args [] ...@@ -342,7 +343,7 @@ func (broker *Broker) invokeInterchain(stub shim.ChaincodeStubInterface, args []
return errorResponse(fmt.Sprintf("cannot parse %s to bool", args[3])) return errorResponse(fmt.Sprintf("cannot parse %s to bool", args[3]))
} }
if err := broker.updateIndex(stub, sourceChainID, sequenceNum, isReq); err != nil { if err := broker.updateIndex(stub, srcChainMethod, sequenceNum, isReq); err != nil {
return errorResponse(err.Error()) return errorResponse(err.Error())
} }
...@@ -364,7 +365,7 @@ func (broker *Broker) invokeInterchain(stub shim.ChaincodeStubInterface, args [] ...@@ -364,7 +365,7 @@ func (broker *Broker) invokeInterchain(stub shim.ChaincodeStubInterface, args []
return errorResponse(fmt.Sprintf("invoke chaincode '%s' function %s err: %s", splitedCID[1], callFunc.Func, response.Message)) return errorResponse(fmt.Sprintf("invoke chaincode '%s' function %s err: %s", splitedCID[1], callFunc.Func, response.Message))
} }
inKey := broker.inMsgKey(sourceChainID, sequenceNum) inKey := broker.inMsgKey(srcChainMethod, sequenceNum)
value, err := json.Marshal(response) value, err := json.Marshal(response)
if err != nil { if err != nil {
return errorResponse(err.Error()) return errorResponse(err.Error())
......
...@@ -5,6 +5,7 @@ import ( ...@@ -5,6 +5,7 @@ import (
"encoding/json" "encoding/json"
"fmt" "fmt"
"strconv" "strconv"
"strings"
"github.com/golang/protobuf/proto" "github.com/golang/protobuf/proto"
"github.com/hyperledger/fabric/core/chaincode/shim" "github.com/hyperledger/fabric/core/chaincode/shim"
...@@ -210,3 +211,23 @@ func (broker *Broker) checkWhitelist(stub shim.ChaincodeStubInterface, function ...@@ -210,3 +211,23 @@ func (broker *Broker) checkWhitelist(stub shim.ChaincodeStubInterface, function
return broker.onlyWhitelist(stub) return broker.onlyWhitelist(stub)
} }
func (broker *Broker) validDID(did string) bool {
s := strings.Split(did, ":")
if len(s) != 4 || s[0] != "did" || s[1] == "" || s[2] == "" || s[3] == "" {
return false
}
return true
}
func parseMethod(did string) string {
s := strings.Split(did, ":")
if len(s) != 4 || s[0] != "did" || s[1] == "" || s[2] == "" || s[3] == "" {
return ""
}
return fmt.Sprintf("%s:%s:%s:.", s[0], s[1], s[2])
}
func ErrInvalidDID(did string) pb.Response {
return errorResponse(fmt.Sprintf("Invalid did format for %s", did))
}
...@@ -19,9 +19,12 @@ func (broker *Broker) getOutMessage(stub shim.ChaincodeStubInterface, args []str ...@@ -19,9 +19,12 @@ func (broker *Broker) getOutMessage(stub shim.ChaincodeStubInterface, args []str
if len(args) < 2 { if len(args) < 2 {
return shim.Error("incorrect number of arguments, expecting 2") return shim.Error("incorrect number of arguments, expecting 2")
} }
destChainID := args[0] destChainMethod := args[0]
sequenceNum := args[1] sequenceNum := args[1]
key := broker.outMsgKey(destChainID, sequenceNum) if !broker.validDID(destChainMethod) {
return ErrInvalidDID(destChainMethod)
}
key := broker.outMsgKey(destChainMethod, sequenceNum)
v, err := stub.GetState(key) v, err := stub.GetState(key)
if err != nil { if err != nil {
return shim.Error(err.Error()) return shim.Error(err.Error())
...@@ -42,9 +45,12 @@ func (broker *Broker) getInMessage(stub shim.ChaincodeStubInterface, args []stri ...@@ -42,9 +45,12 @@ func (broker *Broker) getInMessage(stub shim.ChaincodeStubInterface, args []stri
if len(args) < 2 { if len(args) < 2 {
return shim.Error("incorrect number of arguments, expecting 2") return shim.Error("incorrect number of arguments, expecting 2")
} }
sourceChainID := args[0] sourceChainMethod := args[0]
sequenceNum := args[1] sequenceNum := args[1]
key := broker.inMsgKey(sourceChainID, sequenceNum) if !broker.validDID(sourceChainMethod) {
return ErrInvalidDID(sourceChainMethod)
}
key := broker.inMsgKey(sourceChainMethod, sequenceNum)
v, err := stub.GetState(key) v, err := stub.GetState(key)
if err != nil { if err != nil {
return shim.Error(err.Error()) return shim.Error(err.Error())
......
...@@ -61,11 +61,10 @@ func (s *DataSwapper) get(stub shim.ChaincodeStubInterface, args []string) pb.Re ...@@ -61,11 +61,10 @@ func (s *DataSwapper) get(stub shim.ChaincodeStubInterface, args []string) pb.Re
} }
return shim.Success(value) return shim.Success(value)
case 3: case 2:
// args[0]: destination appchain id // args[0]: destination appchain contract did
// args[1]: destination contract address // args[1]: key
// args[2]: key b := util.ToChaincodeArgs(emitInterchainEventFunc, args[0], "interchainGet", args[2], "interchainSet", args[2], "", "")
b := util.ToChaincodeArgs(emitInterchainEventFunc, args[0], args[1], "interchainGet", args[2], "interchainSet", args[2], "", "")
response := stub.InvokeChaincode(brokerContractName, b, channelID) response := stub.InvokeChaincode(brokerContractName, b, channelID)
if response.Status != shim.OK { if response.Status != shim.OK {
return shim.Error(fmt.Errorf("invoke broker chaincode %s error: %s", brokerContractName, response.Message).Error()) return shim.Error(fmt.Errorf("invoke broker chaincode %s error: %s", brokerContractName, response.Message).Error())
......
...@@ -91,14 +91,12 @@ func (t *Transfer) transfer(stub shim.ChaincodeStubInterface, args []string) pb. ...@@ -91,14 +91,12 @@ func (t *Transfer) transfer(stub shim.ChaincodeStubInterface, args []string) pb.
} }
return shim.Success(nil) return shim.Success(nil)
case 5: case 4:
// args[0]: destination appchain id // args[0]: destination appchain contract did
// args[1]: destination contract address destContractDID := args[0]
dest := args[0] sender := args[1]
address := args[1] receiver := args[2]
sender := args[2] amountArg := args[3]
receiver := args[3]
amountArg := args[4]
amount, err := getAmountArg(amountArg) amount, err := getAmountArg(amountArg)
if err != nil { if err != nil {
...@@ -123,7 +121,7 @@ func (t *Transfer) transfer(stub shim.ChaincodeStubInterface, args []string) pb. ...@@ -123,7 +121,7 @@ func (t *Transfer) transfer(stub shim.ChaincodeStubInterface, args []string) pb.
args := strings.Join([]string{sender, receiver, amountArg}, ",") args := strings.Join([]string{sender, receiver, amountArg}, ",")
argsRb := strings.Join([]string{sender, amountArg}, ",") argsRb := strings.Join([]string{sender, amountArg}, ",")
b := util.ToChaincodeArgs(emitInterchainEventFunc, dest, address, "interchainCharge", args, "", "", "interchainRollback", argsRb) b := util.ToChaincodeArgs(emitInterchainEventFunc, destContractDID, "interchainCharge", args, "", "", "interchainRollback", argsRb)
response := stub.InvokeChaincode(brokerContractName, b, channelID) response := stub.InvokeChaincode(brokerContractName, b, channelID)
if response.Status != shim.OK { if response.Status != shim.OK {
return shim.Error(fmt.Errorf("invoke broker chaincode %s", response.Message).Error()) return shim.Error(fmt.Errorf("invoke broker chaincode %s", response.Message).Error())
...@@ -131,7 +129,7 @@ func (t *Transfer) transfer(stub shim.ChaincodeStubInterface, args []string) pb. ...@@ -131,7 +129,7 @@ func (t *Transfer) transfer(stub shim.ChaincodeStubInterface, args []string) pb.
return shim.Success(nil) return shim.Success(nil)
default: default:
return shim.Error("incorrect number of arguments") return shim.Error(fmt.Sprintf("incorrect number of arguments %d", len(args)))
} }
} }
......
...@@ -6,6 +6,7 @@ require ( ...@@ -6,6 +6,7 @@ require (
github.com/OneOfOne/xxhash v1.2.5 // indirect github.com/OneOfOne/xxhash v1.2.5 // indirect
github.com/Rican7/retry v0.1.0 github.com/Rican7/retry v0.1.0
github.com/VividCortex/gohistogram v1.0.0 // indirect github.com/VividCortex/gohistogram v1.0.0 // indirect
github.com/meshplus/bitxid v0.0.0-20210331074321-62187b1145f5
github.com/cloudflare/cfssl v0.0.0-20190409034051-768cd563887f github.com/cloudflare/cfssl v0.0.0-20190409034051-768cd563887f
github.com/elastic/gosigar v0.8.1-0.20180330100440-37f05ff46ffa // indirect github.com/elastic/gosigar v0.8.1-0.20180330100440-37f05ff46ffa // indirect
github.com/ethereum/go-ethereum v1.9.18 // indirect github.com/ethereum/go-ethereum v1.9.18 // indirect
......
...@@ -65,6 +65,8 @@ github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= ...@@ -65,6 +65,8 @@ github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQkY= github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQkY=
github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=
github.com/bitxhub/bitxid v0.2.0 h1:5o8EPtkwWmWhFGuPsmUGaG6Q9sC2GaWe8SrKibo91d8=
github.com/bitxhub/bitxid v0.2.0/go.mod h1:fOr+il1qUap5OTo6p4krM3Hsk4OZkGxC30BIjjwNz2c=
github.com/bombsimon/wsl/v2 v2.0.0 h1:+Vjcn+/T5lSrO8Bjzhk4v14Un/2UyCA1E3V5j9nwTkQ= github.com/bombsimon/wsl/v2 v2.0.0 h1:+Vjcn+/T5lSrO8Bjzhk4v14Un/2UyCA1E3V5j9nwTkQ=
github.com/bombsimon/wsl/v2 v2.0.0/go.mod h1:mf25kr/SqFEPhhcxW1+7pxzGlW+hIl/hYTKY95VwV8U= github.com/bombsimon/wsl/v2 v2.0.0/go.mod h1:mf25kr/SqFEPhhcxW1+7pxzGlW+hIl/hYTKY95VwV8U=
github.com/btcsuite/btcd v0.0.0-20171128150713-2e60448ffcc6/go.mod h1:Dmm/EzmjnCiweXmzRIAiUWCInVmPgjkzgv5k4tVyXiQ= github.com/btcsuite/btcd v0.0.0-20171128150713-2e60448ffcc6/go.mod h1:Dmm/EzmjnCiweXmzRIAiUWCInVmPgjkzgv5k4tVyXiQ=
...@@ -406,6 +408,7 @@ github.com/huin/goupnp v0.0.0-20161224104101-679507af18f3/go.mod h1:MZ2ZmwcBpvOo ...@@ -406,6 +408,7 @@ github.com/huin/goupnp v0.0.0-20161224104101-679507af18f3/go.mod h1:MZ2ZmwcBpvOo
github.com/huin/goupnp v1.0.0/go.mod h1:n9v9KO1tAxYH82qOn+UTIFQDmx5n1Zxd/ClZDMX7Bnc= github.com/huin/goupnp v1.0.0/go.mod h1:n9v9KO1tAxYH82qOn+UTIFQDmx5n1Zxd/ClZDMX7Bnc=
github.com/huin/goutil v0.0.0-20170803182201-1ca381bf3150/go.mod h1:PpLOETDnJ0o3iZrZfqZzyLl6l7F3c6L1oWn7OICBi6o= github.com/huin/goutil v0.0.0-20170803182201-1ca381bf3150/go.mod h1:PpLOETDnJ0o3iZrZfqZzyLl6l7F3c6L1oWn7OICBi6o=
github.com/hyperledger/fabric v1.4.8 h1:G0PeG/WHHAApO/PXkDAcwjur5L5+FNiVbhKidzNX4Z4= github.com/hyperledger/fabric v1.4.8 h1:G0PeG/WHHAApO/PXkDAcwjur5L5+FNiVbhKidzNX4Z4=
github.com/hyperledger/fabric v1.4.11 h1:Z+cB0cPclR2VcoESlrcIRHI+vWv8TvRDESC9pwYw1nU=
github.com/hyperledger/fabric v2.0.1+incompatible h1:7W+yG0gLKTC7NLcWPT3vfpnaseztPpH9wXGfAW7yvBs= github.com/hyperledger/fabric v2.0.1+incompatible h1:7W+yG0gLKTC7NLcWPT3vfpnaseztPpH9wXGfAW7yvBs=
github.com/hyperledger/fabric v2.0.1+incompatible/go.mod h1:tGFAOCT696D3rG0Vofd2dyWYLySHlh0aQjf7Q1HAju0= github.com/hyperledger/fabric v2.0.1+incompatible/go.mod h1:tGFAOCT696D3rG0Vofd2dyWYLySHlh0aQjf7Q1HAju0=
github.com/hyperledger/fabric v2.1.1+incompatible h1:cYYRv3vVg4kA6DmrixLxwn1nwBEUuYda8DsMwlaMKbY= github.com/hyperledger/fabric v2.1.1+incompatible h1:cYYRv3vVg4kA6DmrixLxwn1nwBEUuYda8DsMwlaMKbY=
...@@ -721,6 +724,7 @@ github.com/meshplus/bitxhub v1.0.0-rc2/go.mod h1:ijWzPl7GExD3IKXJ0LhV4q680kDy1IF ...@@ -721,6 +724,7 @@ github.com/meshplus/bitxhub v1.0.0-rc2/go.mod h1:ijWzPl7GExD3IKXJ0LhV4q680kDy1IF
github.com/meshplus/bitxhub-core v0.1.0-rc1/go.mod h1:ayq95vbGEh/G2nKyPeXPc62zanWhDuusVpIDAHm4Rk0= github.com/meshplus/bitxhub-core v0.1.0-rc1/go.mod h1:ayq95vbGEh/G2nKyPeXPc62zanWhDuusVpIDAHm4Rk0=
github.com/meshplus/bitxhub-core v0.1.0-rc1.0.20200513081655-9e99eb6078ff/go.mod h1:JAxVCppTLwO6+NG6z0ycK0RuZZvNFavsx5vqrsV2ewM= github.com/meshplus/bitxhub-core v0.1.0-rc1.0.20200513081655-9e99eb6078ff/go.mod h1:JAxVCppTLwO6+NG6z0ycK0RuZZvNFavsx5vqrsV2ewM=
github.com/meshplus/bitxhub-core v0.1.0-rc1.0.20200526060151-b0efad4a2046/go.mod h1:txnekA7OS4YIixuSCk62BFKkmlqMP2w4R6Em8AR04pg= github.com/meshplus/bitxhub-core v0.1.0-rc1.0.20200526060151-b0efad4a2046/go.mod h1:txnekA7OS4YIixuSCk62BFKkmlqMP2w4R6Em8AR04pg=
github.com/meshplus/bitxhub-core v0.1.0-rc1.0.20201021153523-274a013bfd41/go.mod h1:/SQKAylZzPup1JTc3WoApLEsB4uV3enXB2ib6jLpYUk=
github.com/meshplus/bitxhub-core v0.1.0-rc1.0.20210204062242-16739cd5ee9a/go.mod h1:MHf0waxqnW4Qwfpq66jqvJP+FritN5OTs/8wlQcNlJY= github.com/meshplus/bitxhub-core v0.1.0-rc1.0.20210204062242-16739cd5ee9a/go.mod h1:MHf0waxqnW4Qwfpq66jqvJP+FritN5OTs/8wlQcNlJY=
github.com/meshplus/bitxhub-kit v1.0.0-rc1 h1:gNi8IFU5CMHT3KE2I4ACj5alMW9h/4cV8xOxn7wSmtA= github.com/meshplus/bitxhub-kit v1.0.0-rc1 h1:gNi8IFU5CMHT3KE2I4ACj5alMW9h/4cV8xOxn7wSmtA=
github.com/meshplus/bitxhub-kit v1.0.0-rc1/go.mod h1:ra/AhOkPvpElI+wXrB9G6DjdcrdxFU3vMwA5MYKr9D0= github.com/meshplus/bitxhub-kit v1.0.0-rc1/go.mod h1:ra/AhOkPvpElI+wXrB9G6DjdcrdxFU3vMwA5MYKr9D0=
...@@ -734,8 +738,12 @@ github.com/meshplus/bitxhub-kit v1.0.1-0.20200525112026-df2160653e23 h1:Q3+du0aT ...@@ -734,8 +738,12 @@ github.com/meshplus/bitxhub-kit v1.0.1-0.20200525112026-df2160653e23 h1:Q3+du0aT
github.com/meshplus/bitxhub-kit v1.0.1-0.20200525112026-df2160653e23/go.mod h1:8Pprmnq+2fFi5kJP0qcbwPl/fe22nro0OamjtwD0LJM= github.com/meshplus/bitxhub-kit v1.0.1-0.20200525112026-df2160653e23/go.mod h1:8Pprmnq+2fFi5kJP0qcbwPl/fe22nro0OamjtwD0LJM=
github.com/meshplus/bitxhub-kit v1.0.1-0.20200813124031-6f6bdc99564f h1:86DXIUH6wUXYotD+xXWjAucay1+dk1A5PnWPLd79tRo= github.com/meshplus/bitxhub-kit v1.0.1-0.20200813124031-6f6bdc99564f h1:86DXIUH6wUXYotD+xXWjAucay1+dk1A5PnWPLd79tRo=
github.com/meshplus/bitxhub-kit v1.0.1-0.20200813124031-6f6bdc99564f/go.mod h1:Whtgcr25HOF6iJv0Ib5/BPnEXq9iNFO89j8JQkElISk= github.com/meshplus/bitxhub-kit v1.0.1-0.20200813124031-6f6bdc99564f/go.mod h1:Whtgcr25HOF6iJv0Ib5/BPnEXq9iNFO89j8JQkElISk=
github.com/meshplus/bitxhub-kit v1.0.1 h1:OeXXdASOkh/XAvf815eYK+J6p25pRKhkQICHNhjyIAc=
github.com/meshplus/bitxhub-kit v1.0.1/go.mod h1:r4l4iqn0RPJreb/OmoYKfjCjQJrXpZX++6Qc31VG/1k=
github.com/meshplus/bitxhub-kit v1.1.1/go.mod h1:r4l4iqn0RPJreb/OmoYKfjCjQJrXpZX++6Qc31VG/1k=
github.com/meshplus/bitxhub-kit v1.1.2-0.20201021105954-468d0a9d7957/go.mod h1:r4l4iqn0RPJreb/OmoYKfjCjQJrXpZX++6Qc31VG/1k= github.com/meshplus/bitxhub-kit v1.1.2-0.20201021105954-468d0a9d7957/go.mod h1:r4l4iqn0RPJreb/OmoYKfjCjQJrXpZX++6Qc31VG/1k=
github.com/meshplus/bitxhub-kit v1.1.2-0.20201023030558-9f36554d5d5d/go.mod h1:r4l4iqn0RPJreb/OmoYKfjCjQJrXpZX++6Qc31VG/1k= github.com/meshplus/bitxhub-kit v1.1.2-0.20201023030558-9f36554d5d5d/go.mod h1:r4l4iqn0RPJreb/OmoYKfjCjQJrXpZX++6Qc31VG/1k=
github.com/meshplus/bitxhub-kit v1.1.2-0.20201023073721-052e6b89ea39/go.mod h1:r4l4iqn0RPJreb/OmoYKfjCjQJrXpZX++6Qc31VG/1k=
github.com/meshplus/bitxhub-kit v1.1.2-0.20201203072410-8a0383a6870d h1:J9tzTNf29mR0r97An3KoAtZQYlwpNhlMItWKyzKJLHU= github.com/meshplus/bitxhub-kit v1.1.2-0.20201203072410-8a0383a6870d h1:J9tzTNf29mR0r97An3KoAtZQYlwpNhlMItWKyzKJLHU=
github.com/meshplus/bitxhub-kit v1.1.2-0.20201203072410-8a0383a6870d/go.mod h1:KR7ZlXhII9n0Bu8viaZTScvXCYn0MCQnYlsTvHPp0XA= github.com/meshplus/bitxhub-kit v1.1.2-0.20201203072410-8a0383a6870d/go.mod h1:KR7ZlXhII9n0Bu8viaZTScvXCYn0MCQnYlsTvHPp0XA=
github.com/meshplus/bitxhub-model v1.0.0-rc3/go.mod h1:ZCctQIYTlE3vJ8Lhkrgs9bWwNA+Dw4JzojOSIzLVU6E= github.com/meshplus/bitxhub-model v1.0.0-rc3/go.mod h1:ZCctQIYTlE3vJ8Lhkrgs9bWwNA+Dw4JzojOSIzLVU6E=
...@@ -749,15 +757,21 @@ github.com/meshplus/bitxhub-model v1.0.0-rc4.0.20200729120451-6ff9eb7fe8fc h1:40 ...@@ -749,15 +757,21 @@ github.com/meshplus/bitxhub-model v1.0.0-rc4.0.20200729120451-6ff9eb7fe8fc h1:40
github.com/meshplus/bitxhub-model v1.0.0-rc4.0.20200729120451-6ff9eb7fe8fc/go.mod h1:QK8aACbxtZEA3Hk1BOCirW0uxMWLsMrLDpWz9FweIKM= github.com/meshplus/bitxhub-model v1.0.0-rc4.0.20200729120451-6ff9eb7fe8fc/go.mod h1:QK8aACbxtZEA3Hk1BOCirW0uxMWLsMrLDpWz9FweIKM=
github.com/meshplus/bitxhub-model v1.0.0-rc4.0.20200731025300-2bb1717059e0 h1:HICOZKS7qw4++eT0EXioutryV0O+v6aPp1jdhjlfJyU= github.com/meshplus/bitxhub-model v1.0.0-rc4.0.20200731025300-2bb1717059e0 h1:HICOZKS7qw4++eT0EXioutryV0O+v6aPp1jdhjlfJyU=
github.com/meshplus/bitxhub-model v1.0.0-rc4.0.20200731025300-2bb1717059e0/go.mod h1:QK8aACbxtZEA3Hk1BOCirW0uxMWLsMrLDpWz9FweIKM= github.com/meshplus/bitxhub-model v1.0.0-rc4.0.20200731025300-2bb1717059e0/go.mod h1:QK8aACbxtZEA3Hk1BOCirW0uxMWLsMrLDpWz9FweIKM=
github.com/meshplus/bitxhub-model v1.1.1/go.mod h1:lUl9vPZXM9tP+B0ABRW/2eOW/6KCmjFTdoiTj5Vut/A=
github.com/meshplus/bitxhub-model v1.1.2-0.20201021152621-0b3c17c54b23/go.mod h1:4qWBZx5wv7WZzUqiuBsbkQqQ2Ju8aOFpsoNpBBNy8Us= github.com/meshplus/bitxhub-model v1.1.2-0.20201021152621-0b3c17c54b23/go.mod h1:4qWBZx5wv7WZzUqiuBsbkQqQ2Ju8aOFpsoNpBBNy8Us=
github.com/meshplus/bitxhub-model v1.1.2-0.20201023091417-b6445e44d535/go.mod h1:4qWBZx5wv7WZzUqiuBsbkQqQ2Ju8aOFpsoNpBBNy8Us=
github.com/meshplus/bitxhub-model v1.1.2-0.20210107045700-cee670a2e117/go.mod h1:x3H+TL24wcByzHegenLfs+5PQkQGNsk8eCm31QJMa+Q= github.com/meshplus/bitxhub-model v1.1.2-0.20210107045700-cee670a2e117/go.mod h1:x3H+TL24wcByzHegenLfs+5PQkQGNsk8eCm31QJMa+Q=
github.com/meshplus/bitxhub-model v1.1.2-0.20210120083349-c7a006b03fcb h1:PxGQL22OVxozkvEgVvxHol9WDqCZlhyvnd0Bu0HBX1Y=
github.com/meshplus/bitxhub-model v1.1.2-0.20210120083349-c7a006b03fcb/go.mod h1:x3H+TL24wcByzHegenLfs+5PQkQGNsk8eCm31QJMa+Q= github.com/meshplus/bitxhub-model v1.1.2-0.20210120083349-c7a006b03fcb/go.mod h1:x3H+TL24wcByzHegenLfs+5PQkQGNsk8eCm31QJMa+Q=
github.com/meshplus/bitxhub-model v1.1.2-0.20210312014622-c3ad532b64ad h1:aTK2R7ATKdfAQe96xaXM91r6I1GPGvqFkHmum57G+G8= github.com/meshplus/bitxhub-model v1.1.2-0.20210312014622-c3ad532b64ad h1:aTK2R7ATKdfAQe96xaXM91r6I1GPGvqFkHmum57G+G8=
github.com/meshplus/bitxhub-model v1.1.2-0.20210312014622-c3ad532b64ad/go.mod h1:x3H+TL24wcByzHegenLfs+5PQkQGNsk8eCm31QJMa+Q= github.com/meshplus/bitxhub-model v1.1.2-0.20210312014622-c3ad532b64ad/go.mod h1:x3H+TL24wcByzHegenLfs+5PQkQGNsk8eCm31QJMa+Q=
github.com/meshplus/bitxid v0.0.0-20210331074321-62187b1145f5 h1:AIK+w1w46SDjf3BGQstCnzoLRK1OeDullbaATaXbTHc=
github.com/meshplus/bitxid v0.0.0-20210331074321-62187b1145f5/go.mod h1:vAldSRfDe2Qo7exsSTbchVmZWXPY7fhWQrRw18QJHho=
github.com/meshplus/go-bitxhub-client v1.0.0-rc3/go.mod h1:FpiCyf6KhydcqthrHdvvPhbPIcD92b+Ju8T7WvQtSyM= github.com/meshplus/go-bitxhub-client v1.0.0-rc3/go.mod h1:FpiCyf6KhydcqthrHdvvPhbPIcD92b+Ju8T7WvQtSyM=
github.com/meshplus/go-bitxhub-client v1.0.0-rc4.0.20200509065005-851bf8c357e4/go.mod h1:JIfB02707GTRV97lMdw09GStYlK4upf1kn3B4DvwQYA= github.com/meshplus/go-bitxhub-client v1.0.0-rc4.0.20200509065005-851bf8c357e4/go.mod h1:JIfB02707GTRV97lMdw09GStYlK4upf1kn3B4DvwQYA=
github.com/meshplus/go-bitxhub-client v1.0.0-rc4.0.20200731031000-ec0387c42327 h1:oWNQm4YnDeRCy6VGPq6Kaw2y89nBRWP3WfRD2XbwS+c= github.com/meshplus/go-bitxhub-client v1.0.0-rc4.0.20200731031000-ec0387c42327 h1:oWNQm4YnDeRCy6VGPq6Kaw2y89nBRWP3WfRD2XbwS+c=
github.com/meshplus/go-bitxhub-client v1.0.0-rc4.0.20200731031000-ec0387c42327/go.mod h1:sZiSJ/ogv44V1OKMlg6rFxR6ib137h9Gc5PaC5W57RQ= github.com/meshplus/go-bitxhub-client v1.0.0-rc4.0.20200731031000-ec0387c42327/go.mod h1:sZiSJ/ogv44V1OKMlg6rFxR6ib137h9Gc5PaC5W57RQ=
github.com/meshplus/go-bitxhub-client v1.0.0-rc4.0.20201023092924-5f9a248146f9/go.mod h1:6e0wKF//AwnJPlzXsfl5EDLRzn+/Wt8+fOEbKsYSFlc=
github.com/meshplus/go-bitxhub-client v1.0.0-rc4.0.20210301024916-b7461066a067/go.mod h1:ZWklYGrAMQcknmMMyxZtRU1IiBRuoYy570QNTp3WJbI= github.com/meshplus/go-bitxhub-client v1.0.0-rc4.0.20210301024916-b7461066a067/go.mod h1:ZWklYGrAMQcknmMMyxZtRU1IiBRuoYy570QNTp3WJbI=
github.com/meshplus/go-lightp2p v0.0.0-20200817105923-6b3aee40fa54/go.mod h1:G89UJaeqCQFxFdp8wzy1AdKfMtDEhpySau0pjDNeeaw= github.com/meshplus/go-lightp2p v0.0.0-20200817105923-6b3aee40fa54/go.mod h1:G89UJaeqCQFxFdp8wzy1AdKfMtDEhpySau0pjDNeeaw=
github.com/meshplus/pier v1.0.0-rc1.0.20200707085406-951dc93be28b h1:2w2wGZ1XSHosf5vQDP3hE5LbLqRJusXJAW99oX/MrH4= github.com/meshplus/pier v1.0.0-rc1.0.20200707085406-951dc93be28b h1:2w2wGZ1XSHosf5vQDP3hE5LbLqRJusXJAW99oX/MrH4=
...@@ -772,6 +786,8 @@ github.com/meshplus/pier v1.0.0-rc1.0.20200717044435-de24cfbef0f3 h1:zpSyEHn69VF ...@@ -772,6 +786,8 @@ github.com/meshplus/pier v1.0.0-rc1.0.20200717044435-de24cfbef0f3 h1:zpSyEHn69VF
github.com/meshplus/pier v1.0.0-rc1.0.20200717044435-de24cfbef0f3/go.mod h1:78k4sa5aeOKXGBOU776vnRHaoZ4BJ8H0vassLC8oPQs= github.com/meshplus/pier v1.0.0-rc1.0.20200717044435-de24cfbef0f3/go.mod h1:78k4sa5aeOKXGBOU776vnRHaoZ4BJ8H0vassLC8oPQs=
github.com/meshplus/pier v1.1.0-rc1.0.20200824115625-bb57600455be h1:SAFio4GGQp3cTj+XcMF+xwJInMaKrFTGqQ+v+A9b2qg= github.com/meshplus/pier v1.1.0-rc1.0.20200824115625-bb57600455be h1:SAFio4GGQp3cTj+XcMF+xwJInMaKrFTGqQ+v+A9b2qg=
github.com/meshplus/pier v1.1.0-rc1.0.20200824115625-bb57600455be/go.mod h1:U9cOVTRdwGpWRz6A+zwIMDO76GL5w9l8W1NAtXIg/1U= github.com/meshplus/pier v1.1.0-rc1.0.20200824115625-bb57600455be/go.mod h1:U9cOVTRdwGpWRz6A+zwIMDO76GL5w9l8W1NAtXIg/1U=
github.com/meshplus/pier v1.1.0-rc1.0.20201026071918-4c36946bf7b5 h1:xb4THDuIXhjxVSACVcMySj3QTlbRKCFUIc6E7rcj57I=
github.com/meshplus/pier v1.1.0-rc1.0.20201026071918-4c36946bf7b5/go.mod h1:3x/fZekC4rSb7yTY7L4MvXqoZBEhXJvDUA/nI30WSzg=
github.com/meshplus/pier v1.5.1-0.20210312103925-148435c71325 h1:3Nhv1eK+7s0GXf1gs1oDZm9EdIfeeLN91lA6+yYczk0= github.com/meshplus/pier v1.5.1-0.20210312103925-148435c71325 h1:3Nhv1eK+7s0GXf1gs1oDZm9EdIfeeLN91lA6+yYczk0=
github.com/meshplus/pier v1.5.1-0.20210312103925-148435c71325/go.mod h1:oj6DRUxEpSfj8pwTw7BjwhjUfx5sam840WKOkCfrli8= github.com/meshplus/pier v1.5.1-0.20210312103925-148435c71325/go.mod h1:oj6DRUxEpSfj8pwTw7BjwhjUfx5sam840WKOkCfrli8=
github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE= github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE=
...@@ -1024,6 +1040,7 @@ github.com/spf13/jwalterweatherman v0.0.0-20180109140146-7c0cea34c8ec/go.mod h1: ...@@ -1024,6 +1040,7 @@ github.com/spf13/jwalterweatherman v0.0.0-20180109140146-7c0cea34c8ec/go.mod h1:
github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk= github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk=
github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo=
github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg=
github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
...@@ -1280,6 +1297,7 @@ golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7w ...@@ -1280,6 +1297,7 @@ golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200509044756-6aff5f38e54f h1:mOhmO9WsBaJCNmaZHPtHs9wOcdqdKCjF6OPJlmDM3KI= golang.org/x/sys v0.0.0-20200509044756-6aff5f38e54f h1:mOhmO9WsBaJCNmaZHPtHs9wOcdqdKCjF6OPJlmDM3KI=
golang.org/x/sys v0.0.0-20200509044756-6aff5f38e54f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200509044756-6aff5f38e54f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200519105757-fe76b779f299 h1:DYfZAGf2WMFjMxbgTjaC+2HC7NkNAQs+6Q8b9WEB/F4=
golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201223074533-0d417f636930 h1:vRgIt+nup/B/BwIS0g2oC0haq0iqbV3ZA+u6+0TlNCo= golang.org/x/sys v0.0.0-20201223074533-0d417f636930 h1:vRgIt+nup/B/BwIS0g2oC0haq0iqbV3ZA+u6+0TlNCo=
golang.org/x/sys v0.0.0-20201223074533-0d417f636930/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201223074533-0d417f636930/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
......
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