OSDN Git Service

feat: add build crosschain input (#91)
[bytom/vapor.git] / wallet / annotated.go
index 849304d..5696e34 100644 (file)
@@ -9,7 +9,6 @@ import (
        "github.com/vapor/account"
        "github.com/vapor/asset"
        "github.com/vapor/blockchain/query"
-       "github.com/vapor/blockchain/signers"
        "github.com/vapor/common"
        "github.com/vapor/consensus"
        "github.com/vapor/consensus/segwit"
@@ -51,7 +50,6 @@ func (w *Wallet) getExternalDefinition(assetID *bc.AssetID) json.RawMessage {
                Alias:             &alias,
                DefinitionMap:     definitionMap,
                RawDefinitionByte: definitionByte,
-               Signer:            &signers.Signer{Type: "external"},
        }
 
        if err := w.AssetReg.SaveAsset(externalAsset, alias); err != nil {
@@ -140,12 +138,6 @@ func getAccountFromACP(program []byte, walletDB dbm.DB) (*account.Account, error
 
 var emptyJSONObject = json.RawMessage(`{}`)
 
-func isValidJSON(b []byte) bool {
-       var v interface{}
-       err := json.Unmarshal(b, &v)
-       return err == nil
-}
-
 func (w *Wallet) buildAnnotatedTransaction(orig *types.Tx, b *types.Block, statusFail bool, indexInBlock int) *query.AnnotatedTx {
        tx := &query.AnnotatedTx{
                ID:                     orig.ID,
@@ -183,26 +175,26 @@ func (w *Wallet) BuildAnnotatedInput(tx *types.Tx, i uint32) *query.AnnotatedInp
        in.InputID = id
        e := tx.Entries[id]
        switch e := e.(type) {
-       case *bc.Spend:
-               in.Type = "spend"
+       case *bc.CrossChainInput:
+               in.Type = "cross_chain_in"
                in.ControlProgram = orig.ControlProgram()
                in.Address = w.getAddressFromControlProgram(in.ControlProgram)
-               in.SpentOutputID = e.SpentOutputId
+               in.SpentOutputID = e.MainchainOutputId
                arguments := orig.Arguments()
                for _, arg := range arguments {
                        in.WitnessArguments = append(in.WitnessArguments, arg)
                }
-       case *bc.Issuance:
-               in.Type = "issue"
-               in.IssuanceProgram = orig.IssuanceProgram()
+
+       case *bc.Spend:
+               in.Type = "spend"
+               in.ControlProgram = orig.ControlProgram()
+               in.Address = w.getAddressFromControlProgram(in.ControlProgram)
+               in.SpentOutputID = e.SpentOutputId
                arguments := orig.Arguments()
                for _, arg := range arguments {
                        in.WitnessArguments = append(in.WitnessArguments, arg)
                }
-               if assetDefinition := orig.AssetDefinition(); isValidJSON(assetDefinition) {
-                       assetDefinition := json.RawMessage(assetDefinition)
-                       in.AssetDefinition = &assetDefinition
-               }
+
        case *bc.Coinbase:
                in.Type = "coinbase"
                in.Arbitrary = e.Arbitrary