OSDN Git Service

Merge pull request #201 from Bytom/v0.1
[bytom/vapor.git] / claim / bytom / mainchain / signing_instruction.go
diff --git a/claim/bytom/mainchain/signing_instruction.go b/claim/bytom/mainchain/signing_instruction.go
deleted file mode 100644 (file)
index ff81b67..0000000
+++ /dev/null
@@ -1,130 +0,0 @@
-package mainchain
-
-import (
-       "encoding/json"
-
-       "github.com/vapor/blockchain/txbuilder"
-       "github.com/vapor/crypto/ed25519/chainkd"
-       chainjson "github.com/vapor/encoding/json"
-       "github.com/vapor/errors"
-)
-
-// AddWitnessKeys adds a SignatureWitness with the given quorum and
-// list of keys derived by applying the derivation path to each of the
-// xpubs.
-func (si *SigningInstruction) AddWitnessKeys(xpubs []chainkd.XPub, quorum int) {
-
-       keyIDs := make([]keyID, 0, len(xpubs))
-       for _, xpub := range xpubs {
-               keyIDs = append(keyIDs, keyID{XPub: xpub})
-       }
-
-       sw := &SignatureWitness{
-               Quorum: quorum,
-               Keys:   keyIDs,
-       }
-       si.WitnessComponents = append(si.WitnessComponents, sw)
-}
-
-// AddRawWitnessKeys adds a SignatureWitness with the given quorum and
-// list of keys derived by applying the derivation path to each of the
-// xpubs.
-func (si *SigningInstruction) AddRawWitnessKeys(xpubs []chainkd.XPub, path [][]byte, quorum int) {
-       hexPath := make([]chainjson.HexBytes, 0, len(path))
-       for _, p := range path {
-               hexPath = append(hexPath, p)
-       }
-
-       keyIDs := make([]keyID, 0, len(xpubs))
-       for _, xpub := range xpubs {
-               keyIDs = append(keyIDs, keyID{xpub, hexPath})
-       }
-
-       sw := &RawTxSigWitness{
-               Quorum: quorum,
-               Keys:   keyIDs,
-       }
-       si.WitnessComponents = append(si.WitnessComponents, sw)
-}
-
-func (si *SigningInstruction) AddRawWitnessKeysWithoutPath(xpubs []chainkd.XPub, quorum int) {
-
-       keyIDs := make([]keyID, 0, len(xpubs))
-       for _, xpub := range xpubs {
-               keyIDs = append(keyIDs, keyID{XPub: xpub})
-       }
-
-       sw := &RawTxSigWitness{
-               Quorum: quorum,
-               Keys:   keyIDs,
-       }
-       si.WitnessComponents = append(si.WitnessComponents, sw)
-}
-
-// SigningInstruction gives directions for signing inputs in a TxTemplate.
-type SigningInstruction struct {
-       Position          uint32             `json:"position"`
-       WitnessComponents []witnessComponent `json:"witness_components,omitempty"`
-}
-
-// witnessComponent is the abstract type for the parts of a
-// SigningInstruction.  Each witnessComponent produces one or more
-// arguments for a VM program via its materialize method. Concrete
-// witnessComponent types include SignatureWitness and dataWitness.
-type witnessComponent interface {
-       Materialize(*[][]byte) error
-}
-
-// UnmarshalJSON unmarshal SigningInstruction
-func (si *SigningInstruction) UnmarshalJSON(b []byte) error {
-       var pre struct {
-               Position          uint32            `json:"position"`
-               WitnessComponents []json.RawMessage `json:"witness_components"`
-       }
-       err := json.Unmarshal(b, &pre)
-       if err != nil {
-               return err
-       }
-
-       si.Position = pre.Position
-       for i, wc := range pre.WitnessComponents {
-               var t struct {
-                       Type string
-               }
-               err = json.Unmarshal(wc, &t)
-               if err != nil {
-                       return errors.Wrapf(err, "unmarshaling error on witness component %d, input %s", i, wc)
-               }
-               switch t.Type {
-               case "data":
-                       var d struct {
-                               Value chainjson.HexBytes
-                       }
-                       err = json.Unmarshal(wc, &d)
-                       if err != nil {
-                               return errors.Wrapf(err, "unmarshaling error on witness component %d, type data, input %s", i, wc)
-                       }
-                       si.WitnessComponents = append(si.WitnessComponents, DataWitness(d.Value))
-
-               case "signature":
-                       var s SignatureWitness
-                       err = json.Unmarshal(wc, &s)
-                       if err != nil {
-                               return errors.Wrapf(err, "unmarshaling error on witness component %d, type signature, input %s", i, wc)
-                       }
-                       si.WitnessComponents = append(si.WitnessComponents, &s)
-
-               case "raw_tx_signature":
-                       var s RawTxSigWitness
-                       err = json.Unmarshal(wc, &s)
-                       if err != nil {
-                               return errors.Wrapf(err, "unmarshaling error on witness component %d, type raw_signature, input %s", i, wc)
-                       }
-                       si.WitnessComponents = append(si.WitnessComponents, &s)
-
-               default:
-                       return errors.WithDetailf(txbuilder.ErrBadWitnessComponent, "witness component %d has unknown type '%s'", i, t.Type)
-               }
-       }
-       return nil
-}