Unverified Commit fdcd26a1 authored by Aiden X's avatar Aiden X Committed by GitHub

Merge pull request #9 from meshplus/refactor/update-fabric-lib

Refactor/update fabric lib and new ibtp payload
parents a54b3ba0 5213e2b7
...@@ -10,13 +10,13 @@ import ( ...@@ -10,13 +10,13 @@ import (
"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/hyperledger/fabric-chaincode-go/shim"
"github.com/hyperledger/fabric-protos-go/common"
"github.com/hyperledger/fabric-protos-go/peer"
"github.com/hyperledger/fabric-sdk-go/pkg/client/channel" "github.com/hyperledger/fabric-sdk-go/pkg/client/channel"
"github.com/hyperledger/fabric-sdk-go/pkg/client/ledger" "github.com/hyperledger/fabric-sdk-go/pkg/client/ledger"
"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/hyperledger/fabric/core/chaincode/shim"
"github.com/hyperledger/fabric/protos/common"
"github.com/hyperledger/fabric/protos/peer"
"github.com/meshplus/bitxhub-kit/log" "github.com/meshplus/bitxhub-kit/log"
"github.com/meshplus/bitxhub-model/pb" "github.com/meshplus/bitxhub-model/pb"
"github.com/meshplus/pier/pkg/model" "github.com/meshplus/pier/pkg/model"
...@@ -231,12 +231,16 @@ func (c *Client) SubmitIBTP(ibtp *pb.IBTP) (*model.PluginResponse, error) { ...@@ -231,12 +231,16 @@ func (c *Client) SubmitIBTP(ibtp *pb.IBTP) (*model.PluginResponse, error) {
if err := pd.Unmarshal(ibtp.Payload); err != nil { if err := pd.Unmarshal(ibtp.Payload); err != nil {
return ret, fmt.Errorf("ibtp payload unmarshal: %w", err) return ret, fmt.Errorf("ibtp payload unmarshal: %w", err)
} }
content := &pb.Content{}
if err := content.Unmarshal(pd.Content); err != nil {
return ret, fmt.Errorf("ibtp content unmarshal: %w", err)
}
args := util.ToChaincodeArgs(ibtp.From, strconv.FormatUint(ibtp.Index, 10), pd.DstContractId) args := util.ToChaincodeArgs(ibtp.From, strconv.FormatUint(ibtp.Index, 10), content.DstContractId)
args = append(args, pd.Args...) args = append(args, content.Args...)
request := channel.Request{ request := channel.Request{
ChaincodeID: c.meta.CCID, ChaincodeID: c.meta.CCID,
Fcn: pd.Func, Fcn: content.Func,
Args: args, Args: args,
} }
...@@ -271,7 +275,7 @@ func (c *Client) SubmitIBTP(ibtp *pb.IBTP) (*model.PluginResponse, error) { ...@@ -271,7 +275,7 @@ func (c *Client) SubmitIBTP(ibtp *pb.IBTP) (*model.PluginResponse, error) {
ret.Message = response.Message ret.Message = response.Message
// If no callback function to invoke, then simply return // If no callback function to invoke, then simply return
if pd.Callback == "" { if content.Callback == "" {
return ret, nil return ret, nil
} }
...@@ -280,9 +284,9 @@ func (c *Client) SubmitIBTP(ibtp *pb.IBTP) (*model.PluginResponse, error) { ...@@ -280,9 +284,9 @@ func (c *Client) SubmitIBTP(ibtp *pb.IBTP) (*model.PluginResponse, error) {
return ret, err return ret, err
} }
switch pd.Func { switch content.Func {
case "interchainGet": case "interchainGet":
newArgs = append(newArgs, pd.Args[0]) newArgs = append(newArgs, content.Args[0])
newArgs = append(newArgs, result...) newArgs = append(newArgs, result...)
case "interchainCharge": case "interchainCharge":
newArgs = append(newArgs, []byte("false")) newArgs = append(newArgs, []byte("false"))
......
...@@ -4,8 +4,8 @@ import ( ...@@ -4,8 +4,8 @@ import (
"fmt" "fmt"
"path/filepath" "path/filepath"
"github.com/hyperledger/fabric/protos/common" "github.com/hyperledger/fabric-protos-go/common"
"github.com/hyperledger/fabric/protos/peer" "github.com/hyperledger/fabric-protos-go/peer"
"github.com/golang/protobuf/proto" "github.com/golang/protobuf/proto"
"github.com/hyperledger/fabric-sdk-go/pkg/client/channel" "github.com/hyperledger/fabric-sdk-go/pkg/client/channel"
......
...@@ -43,13 +43,21 @@ func (ev *Event) encryptPayload() ([]byte, error) { ...@@ -43,13 +43,21 @@ func (ev *Event) encryptPayload() ([]byte, error) {
for _, a := range as { for _, a := range as {
args = append(args, []byte(a)) args = append(args, []byte(a))
} }
ibtppd := &pb.Payload{ content := &pb.Content{
SrcContractId: ev.SrcContractID, SrcContractId: ev.SrcContractID,
DstContractId: ev.DstContractID, DstContractId: ev.DstContractID,
Func: ev.Func, Func: ev.Func,
Args: args, Args: args,
Callback: ev.Callback, Callback: ev.Callback,
} }
data, err := content.Marshal()
if err != nil {
return nil, err
}
ibtppd := &pb.Payload{
Content: data,
}
return ibtppd.Marshal() return ibtppd.Marshal()
} }
......
...@@ -6,9 +6,9 @@ import ( ...@@ -6,9 +6,9 @@ import (
"strconv" "strconv"
"strings" "strings"
"github.com/hyperledger/fabric/core/chaincode/lib/cid" "github.com/hyperledger/fabric-chaincode-go/pkg/cid"
"github.com/hyperledger/fabric/core/chaincode/shim" "github.com/hyperledger/fabric-chaincode-go/shim"
pb "github.com/hyperledger/fabric/protos/peer" pb "github.com/hyperledger/fabric-protos-go/peer"
) )
const ( const (
......
...@@ -5,9 +5,9 @@ import ( ...@@ -5,9 +5,9 @@ import (
"strconv" "strconv"
"strings" "strings"
"github.com/hyperledger/fabric-chaincode-go/shim"
pb "github.com/hyperledger/fabric-protos-go/peer"
"github.com/hyperledger/fabric/common/util" "github.com/hyperledger/fabric/common/util"
"github.com/hyperledger/fabric/core/chaincode/shim"
pb "github.com/hyperledger/fabric/protos/peer"
) )
// get interchain account for transfer contract: setData from,index,tid,name_id,amount // get interchain account for transfer contract: setData from,index,tid,name_id,amount
......
...@@ -7,8 +7,8 @@ import ( ...@@ -7,8 +7,8 @@ import (
"strconv" "strconv"
"github.com/golang/protobuf/proto" "github.com/golang/protobuf/proto"
"github.com/hyperledger/fabric/core/chaincode/shim" "github.com/hyperledger/fabric-chaincode-go/shim"
pb "github.com/hyperledger/fabric/protos/peer" pb "github.com/hyperledger/fabric-protos-go/peer"
) )
type response struct { type response struct {
......
package main package main
import ( import (
"github.com/hyperledger/fabric/core/chaincode/shim" "github.com/hyperledger/fabric-chaincode-go/shim"
pb "github.com/hyperledger/fabric/protos/peer" pb "github.com/hyperledger/fabric-protos-go/peer"
) )
// getOutMeta // getOutMeta
......
...@@ -6,9 +6,9 @@ import ( ...@@ -6,9 +6,9 @@ import (
"strconv" "strconv"
"strings" "strings"
"github.com/hyperledger/fabric-chaincode-go/shim"
pb "github.com/hyperledger/fabric-protos-go/peer"
"github.com/hyperledger/fabric/common/util" "github.com/hyperledger/fabric/common/util"
"github.com/hyperledger/fabric/core/chaincode/shim"
pb "github.com/hyperledger/fabric/protos/peer"
) )
// recharge for transfer contract: charge from,index,tid,name_id,amount // recharge for transfer contract: charge from,index,tid,name_id,amount
......
...@@ -4,9 +4,9 @@ import ( ...@@ -4,9 +4,9 @@ import (
"fmt" "fmt"
"strings" "strings"
"github.com/hyperledger/fabric-chaincode-go/shim"
pb "github.com/hyperledger/fabric-protos-go/peer"
"github.com/hyperledger/fabric/common/util" "github.com/hyperledger/fabric/common/util"
"github.com/hyperledger/fabric/core/chaincode/shim"
pb "github.com/hyperledger/fabric/protos/peer"
) )
const ( const (
......
...@@ -4,7 +4,7 @@ import ( ...@@ -4,7 +4,7 @@ import (
"fmt" "fmt"
"strconv" "strconv"
"github.com/hyperledger/fabric/core/chaincode/shim" "github.com/hyperledger/fabric-chaincode-go/shim"
) )
func getUint64(stub shim.ChaincodeStubInterface, key string) (uint64, error) { func getUint64(stub shim.ChaincodeStubInterface, key string) (uint64, error) {
......
...@@ -5,9 +5,9 @@ import ( ...@@ -5,9 +5,9 @@ import (
"strconv" "strconv"
"strings" "strings"
"github.com/hyperledger/fabric-chaincode-go/shim"
pb "github.com/hyperledger/fabric-protos-go/peer"
"github.com/hyperledger/fabric/common/util" "github.com/hyperledger/fabric/common/util"
"github.com/hyperledger/fabric/core/chaincode/shim"
pb "github.com/hyperledger/fabric/protos/peer"
) )
const ( const (
......
...@@ -3,30 +3,28 @@ module github.com/meshplus/pier-client-fabric ...@@ -3,30 +3,28 @@ module github.com/meshplus/pier-client-fabric
go 1.13 go 1.13
require ( require (
github.com/Knetic/govaluate v3.0.0+incompatible // indirect
github.com/Rican7/retry v0.1.0 github.com/Rican7/retry v0.1.0
github.com/Shopify/sarama v1.26.1 // indirect
github.com/VividCortex/gohistogram v1.0.0 // indirect github.com/VividCortex/gohistogram v1.0.0 // indirect
github.com/cloudflare/cfssl v0.0.0-20180223231731-4e2dcbde5004 github.com/cloudflare/cfssl v0.0.0-20180223231731-4e2dcbde5004
github.com/fsouza/go-dockerclient v1.6.3 // indirect github.com/golang/protobuf v1.4.0
github.com/golang/protobuf v1.3.2
github.com/golangci/golangci-lint v1.23.0 // indirect github.com/golangci/golangci-lint v1.23.0 // indirect
github.com/google/certificate-transparency-go v1.1.0 // indirect github.com/google/certificate-transparency-go v1.1.0 // indirect
github.com/hashicorp/go-version v1.2.0 // indirect github.com/hyperledger/fabric v2.0.1+incompatible
github.com/hyperledger/fabric v1.4.6 github.com/hyperledger/fabric-chaincode-go v0.0.0-20200511190512-bcfeb58dd83a
github.com/hyperledger/fabric-amcl v0.0.0-20200128223036-d1aa2665426a // indirect
github.com/hyperledger/fabric-lib-go v1.0.0 // indirect github.com/hyperledger/fabric-lib-go v1.0.0 // indirect
github.com/hyperledger/fabric-protos-go v0.0.0-20200330074707-cfe579e86986
github.com/hyperledger/fabric-sdk-go v1.0.0-alpha5 github.com/hyperledger/fabric-sdk-go v1.0.0-alpha5
github.com/meshplus/bitxhub-kit v1.0.0-rc1 github.com/meshplus/bitxhub-kit v1.0.1-0.20200511122821-bc96b0c1f6c7
github.com/meshplus/bitxhub-model v1.0.0-rc2 github.com/meshplus/bitxhub-model v1.0.0-rc4.0.20200429111056-62b55c3d4260
github.com/meshplus/pier v0.0.0-00010101000000-000000000000 github.com/meshplus/pier v0.0.0-00010101000000-000000000000
github.com/miekg/pkcs11 v1.0.3 // indirect github.com/sirupsen/logrus v1.5.0
github.com/op/go-logging v0.0.0-20160315200505-970db520ece7 // indirect
github.com/sirupsen/logrus v1.4.2
github.com/spf13/viper v1.6.1 github.com/spf13/viper v1.6.1
github.com/sykesm/zap-logfmt v0.0.3 // indirect
) )
replace github.com/golang/protobuf => github.com/golang/protobuf v1.3.2
replace google.golang.org/grpc => google.golang.org/grpc v1.28.1
replace gopkg.in/yaml.v2 => gopkg.in/yaml.v2 v2.2.7 replace gopkg.in/yaml.v2 => gopkg.in/yaml.v2 v2.2.7
replace golang.org/x/net => golang.org/x/net v0.0.0-20200202094626-16171245cfb2 replace golang.org/x/net => golang.org/x/net v0.0.0-20200202094626-16171245cfb2
......
This diff is collapsed.
...@@ -7,34 +7,47 @@ import ( ...@@ -7,34 +7,47 @@ import (
"github.com/meshplus/bitxhub-model/pb" "github.com/meshplus/bitxhub-model/pb"
) )
func (c *Client) generateCallback(toExecute *pb.IBTP, args [][]byte, proof []byte) (result *pb.IBTP, err error) { func (c *Client) generateCallback(original *pb.IBTP, args [][]byte, proof []byte) (result *pb.IBTP, err error) {
if toExecute == nil { if original == nil {
return nil, fmt.Errorf("got nil ibtp to generate receipt: %w", err) return nil, fmt.Errorf("got nil ibtp to generate receipt: %w", err)
} }
pd := &pb.Payload{} pd := &pb.Payload{}
if err := pd.Unmarshal(toExecute.Payload); err != nil { if err := pd.Unmarshal(original.Payload); err != nil {
return nil, fmt.Errorf("ibtp payload unmarshal: %w", err) return nil, fmt.Errorf("ibtp payload unmarshal: %w", err)
} }
pdb := &pb.Payload{ originalContent := &pb.Content{}
SrcContractId: pd.DstContractId, if err := originalContent.Unmarshal(pd.Content); err != nil {
DstContractId: pd.SrcContractId, return nil, fmt.Errorf("ibtp payload unmarshal: %w", err)
Func: pd.Callback, }
content := &pb.Content{
SrcContractId: originalContent.DstContractId,
DstContractId: originalContent.SrcContractId,
Func: originalContent.Callback,
Args: args, Args: args,
} }
b, err := pdb.Marshal() b, err := content.Marshal()
if err != nil {
return nil, err
}
retPd := &pb.Payload{
Content: b,
}
pdb, err := retPd.Marshal()
if err != nil { if err != nil {
return nil, err return nil, err
} }
return &pb.IBTP{ return &pb.IBTP{
From: toExecute.From, From: original.From,
To: toExecute.To, To: original.To,
Index: toExecute.Index, Index: original.Index,
Type: pb.IBTP_RECEIPT, Type: pb.IBTP_RECEIPT,
Timestamp: time.Now().UnixNano(), Timestamp: time.Now().UnixNano(),
Proof: proof, Proof: proof,
Payload: b, Payload: pdb,
Version: toExecute.Version, Version: original.Version,
}, nil }, nil
} }
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