From 242513c5a23a26f68c2c5fd56cc4029fbc83454d Mon Sep 17 00:00:00 2001 From: msutton Date: Tue, 6 Sep 2022 14:42:40 +0300 Subject: [PATCH] Transaction hashing outputs to be used as reference for rust imp --- .../consensushashing/transaction_hash_test.go | 102 ++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 domain/consensus/utils/consensushashing/transaction_hash_test.go diff --git a/domain/consensus/utils/consensushashing/transaction_hash_test.go b/domain/consensus/utils/consensushashing/transaction_hash_test.go new file mode 100644 index 000000000..5df3fced0 --- /dev/null +++ b/domain/consensus/utils/consensushashing/transaction_hash_test.go @@ -0,0 +1,102 @@ +package consensushashing + +import ( + "fmt" + "testing" + + "github.com/kaspanet/kaspad/domain/consensus/model/externalapi" + "github.com/kaspanet/kaspad/domain/consensus/utils/subnetworks" +) + +func TestTransactionHash(t *testing.T) { + tx := externalapi.DomainTransaction{0, []*externalapi.DomainTransactionInput{}, []*externalapi.DomainTransactionOutput{}, 0, + externalapi.DomainSubnetworkID{}, 0, []byte{}, 0, 0, + nil} + id := TransactionID(&tx) + fmt.Printf("%s\n", id) + tx_hash := TransactionHash(&tx) + fmt.Printf("%s\n\n", tx_hash) + + inputs := []*externalapi.DomainTransactionInput{&externalapi.DomainTransactionInput{ + PreviousOutpoint: externalapi.DomainOutpoint{ + TransactionID: externalapi.DomainTransactionID{}, + Index: 2, + }, + SignatureScript: []byte{1, 2}, + Sequence: 7, + SigOpCount: 5, + UTXOEntry: nil, + }} + + tx = externalapi.DomainTransaction{1, inputs, []*externalapi.DomainTransactionOutput{}, 0, + externalapi.DomainSubnetworkID{}, 0, []byte{}, 0, 0, + nil} + id = TransactionID(&tx) + fmt.Printf("%s\n", id) + tx_hash = TransactionHash(&tx) + fmt.Printf("%s\n\n", tx_hash) + + outputs := []*externalapi.DomainTransactionOutput{&externalapi.DomainTransactionOutput{ + Value: 1564, + ScriptPublicKey: &externalapi.ScriptPublicKey{ + Script: []byte{1, 2, 3, 4, 5}, + Version: 7, + }, + }} + + tx = externalapi.DomainTransaction{1, inputs, outputs, 0, + externalapi.DomainSubnetworkID{}, 0, []byte{}, 0, 0, + nil} + id = TransactionID(&tx) + fmt.Printf("%s\n", id) + tx_hash = TransactionHash(&tx) + fmt.Printf("%s\n\n", tx_hash) + + tx = externalapi.DomainTransaction{2, inputs, outputs, 54, + externalapi.DomainSubnetworkID{}, 3, []byte{}, 4, 7, + nil} + id = TransactionID(&tx) + fmt.Printf("%s\n", id) + tx_hash = TransactionHash(&tx) + fmt.Printf("%s\n\n", tx_hash) + + transactionId, err := externalapi.NewDomainHashFromString("59b3d6dc6cdc660c389c3fdb5704c48c598d279cdf1bab54182db586a4c95dd5") + if err != nil { + t.Fatalf("%s", err) + } + + inputs = []*externalapi.DomainTransactionInput{&externalapi.DomainTransactionInput{ + PreviousOutpoint: externalapi.DomainOutpoint{ + TransactionID: externalapi.DomainTransactionID(*transactionId), + Index: 2, + }, + SignatureScript: []byte{1, 2}, + Sequence: 7, + SigOpCount: 5, + UTXOEntry: nil, + }} + + tx = externalapi.DomainTransaction{2, inputs, outputs, 54, + externalapi.DomainSubnetworkID{}, 3, []byte{}, 4, 7, + nil} + id = TransactionID(&tx) + fmt.Printf("%s\n", id) + tx_hash = TransactionHash(&tx) + fmt.Printf("%s\n\n", tx_hash) + + tx = externalapi.DomainTransaction{2, inputs, outputs, 54, + subnetworks.SubnetworkIDCoinbase, 3, []byte{}, 4, 7, + nil} + id = TransactionID(&tx) + fmt.Printf("%s\n", id) + tx_hash = TransactionHash(&tx) + fmt.Printf("%s\n\n", tx_hash) + + tx = externalapi.DomainTransaction{2, inputs, outputs, 54, + subnetworks.SubnetworkIDRegistry, 3, []byte{}, 4, 7, + nil} + id = TransactionID(&tx) + fmt.Printf("%s\n", id) + tx_hash = TransactionHash(&tx) + fmt.Printf("%s\n\n", tx_hash) +}