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 }