github.com/sixexorg/magnetic-ring@v0.0.0-20191119090307-31705a21e419/cmd/cmd_tx_test.go (about)

     1  package cmd
     2  
     3  import (
     4  	"bytes"
     5  	"fmt"
     6  	"github.com/sixexorg/magnetic-ring/account"
     7  	"github.com/sixexorg/magnetic-ring/common"
     8  	"github.com/sixexorg/magnetic-ring/common/sink"
     9  	"github.com/sixexorg/magnetic-ring/core/mainchain/types"
    10  	"github.com/sixexorg/magnetic-ring/signer/mainchain/signature"
    11  	"testing"
    12  )
    13  
    14  func TestNt(t *testing.T) {
    15  
    16  	password := "jjjkkk"
    17  
    18  	mgr, err := account.NewManager()
    19  	if err != nil {
    20  		fmt.Printf("create wallet error:%v\n", err)
    21  		return
    22  	}
    23  
    24  	acctaddressstr := "ct1aajp7n9hVDSWHTPHukf934azZwNh6gU2"
    25  
    26  	comaddress, err := common.ToAddress(acctaddressstr)
    27  	if err != nil {
    28  		return
    29  	}
    30  
    31  	passwordstr := string(password)
    32  
    33  	rawTx := "0110020008c1c04e0009f84cf84af848f84601f843b84104f992c8418749fc5d4bbcaffc4ff120b20b5550f0b5744cff2dd55ad1bfa7f7db94891af2315443a35330a6527436037b7b3d6de5c41e16171fd461e73b5434500100036443d34df4118065f93c4bee56b5d61d4a3b3d6918011d0001dcdbda9543d34df4118065f93c4bee56b5d61d4a3b3d6918018203e80200000000000000000000000000000000000000000000000000000000000000001c0002dbdad9957417702301a3130edc4bdb35ef760fc47f53f2f9008203e8"
    34  	txbuf,_ := common.Hex2Bytes(rawTx)
    35  	buff := bytes.NewBuffer(txbuf)
    36  	tx := &types.Transaction{}
    37  	sk := sink.NewZeroCopySource(buff.Bytes())
    38  	err = tx.Deserialization(sk)
    39  	if err != nil {
    40  		fmt.Printf("can not deserialize data to transaction,err=%v\n", err)
    41  		return
    42  	}
    43  
    44  	err = signature.SignTransaction(mgr, comaddress, tx, passwordstr)
    45  	if err != nil {
    46  		fmt.Printf("sign transaction error=%v\n", err)
    47  		return
    48  	}
    49  
    50  	b, e := tx.VerifySignature()
    51  	if e != nil {
    52  		fmt.Printf("error=%v\n", e)
    53  		return
    54  	}
    55  
    56  	fmt.Printf("b=%t\n", b)
    57  
    58  	serbufer := new(bytes.Buffer)
    59  
    60  	err = tx.Serialize(serbufer)
    61  
    62  	if err != nil {
    63  		fmt.Printf("Serialize transaction error=%v\n", err)
    64  		return
    65  	}
    66  
    67  	outbuf := serbufer.Bytes()
    68  
    69  	returnstr := common.Bytes2Hex(outbuf)
    70  
    71  	reverse,_ := common.Hex2Bytes(returnstr)
    72  
    73  	txrev := &types.Transaction{}
    74  
    75  	source := sink.NewZeroCopySource(reverse)
    76  	err = txrev.Deserialization(source)
    77  	if err != nil {
    78  		fmt.Printf("transaction Deserialization error=", err)
    79  		return
    80  	}
    81  
    82  	b2, e2 := txrev.VerifySignature()
    83  	if e2 != nil {
    84  		fmt.Printf("e2=%v\n", e2)
    85  		return
    86  	}
    87  
    88  	fmt.Printf("b2=%v\n", b2)
    89  
    90  	//fmt.Printf("%s\n", returnstr)
    91  }