OSDN Git Service

Merge pull request #201 from Bytom/v0.1
[bytom/vapor.git] / claim / bytom / mainchain / witness.go
diff --git a/claim/bytom/mainchain/witness.go b/claim/bytom/mainchain/witness.go
deleted file mode 100644 (file)
index 892550f..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-package mainchain
-
-import (
-       "context"
-
-       "github.com/vapor/blockchain/txbuilder"
-       "github.com/vapor/crypto/ed25519/chainkd"
-       chainjson "github.com/vapor/encoding/json"
-       "github.com/vapor/errors"
-)
-
-// SignFunc is the function passed into Sign that produces
-// a signature for a given xpub, derivation path, and hash.
-type SignFunc func(context.Context, chainkd.XPub, [][]byte, [32]byte, string) ([]byte, error)
-
-// MaterializeWitnesses takes a filled in Template and "materializes"
-// each witness component, turning it into a vector of arguments for
-// the tx's input witness, creating a fully-signed transaction.
-func materializeWitnesses(txTemplate *Template) error {
-       msg := txTemplate.Transaction
-
-       if msg == nil {
-               return errors.Wrap(txbuilder.ErrMissingRawTx)
-       }
-
-       if len(txTemplate.SigningInstructions) > len(msg.Inputs) {
-               return errors.Wrap(txbuilder.ErrBadInstructionCount)
-       }
-
-       for i, sigInst := range txTemplate.SigningInstructions {
-               if msg.Inputs[sigInst.Position] == nil {
-                       return errors.WithDetailf(txbuilder.ErrBadTxInputIdx, "signing instruction %d references missing tx input %d", i, sigInst.Position)
-               }
-
-               var witness [][]byte
-               for j, wc := range sigInst.WitnessComponents {
-                       err := wc.Materialize(&witness)
-                       if err != nil {
-                               return errors.WithDetailf(err, "error in witness component %d of input %d", j, i)
-                       }
-               }
-               msg.SetInputArguments(sigInst.Position, witness)
-       }
-
-       return nil
-}
-
-func signedCount(signs []chainjson.HexBytes) (count int) {
-       for _, sign := range signs {
-               if len(sign) > 0 {
-                       count++
-               }
-       }
-       return
-}
-
-// SignProgress check is all the sign requirement are satisfy
-func SignProgress(txTemplate *Template) bool {
-       for _, sigInst := range txTemplate.SigningInstructions {
-               for _, wc := range sigInst.WitnessComponents {
-                       switch sw := wc.(type) {
-                       case *SignatureWitness:
-                               if signedCount(sw.Sigs) < sw.Quorum {
-                                       return false
-                               }
-                       case *RawTxSigWitness:
-                               if signedCount(sw.Sigs) < sw.Quorum {
-                                       return false
-                               }
-                       }
-               }
-       }
-       return true
-}