Elichai Turkel 45edacfbfa
Replace Double-SHA256 with blake2b and implement domain seperation (#1245)
* Replace default hasher (Double-SHA256) with domain seperated blake2b

* Replace all hashes with domain seperated blake2b

* Update the genesis blocks

* Replace OP_HASH256 with OP_BLAKE2B

* Fix the merkle tree by appending zeros instead of duplicating the hash when there is 1 branch left

* Update tests

* Add a payloadHash function

* Update gitignore to ignore binaries

* Fix a bug in the blake2b opcode
2020-12-21 12:51:45 +02:00

44 lines
1.4 KiB
Go

package transactionhelper
import (
"github.com/kaspanet/kaspad/domain/consensus/model/externalapi"
"github.com/kaspanet/kaspad/domain/consensus/utils/hashes"
"github.com/kaspanet/kaspad/domain/consensus/utils/subnetworks"
)
// NewSubnetworkTransaction returns a new trsnactions in the specified subnetwork with specified gas and payload
func NewSubnetworkTransaction(version int32, inputs []*externalapi.DomainTransactionInput,
outputs []*externalapi.DomainTransactionOutput, subnetworkID *externalapi.DomainSubnetworkID,
gas uint64, payload []byte) *externalapi.DomainTransaction {
payloadHash := hashes.PayloadHash(payload)
return &externalapi.DomainTransaction{
Version: version,
Inputs: inputs,
Outputs: outputs,
LockTime: 0,
SubnetworkID: *subnetworkID,
Gas: gas,
PayloadHash: *payloadHash,
Payload: payload,
Fee: 0,
Mass: 0,
}
}
// NewNativeTransaction returns a new native transaction
func NewNativeTransaction(version int32, inputs []*externalapi.DomainTransactionInput,
outputs []*externalapi.DomainTransactionOutput) *externalapi.DomainTransaction {
return &externalapi.DomainTransaction{
Version: version,
Inputs: inputs,
Outputs: outputs,
LockTime: 0,
SubnetworkID: subnetworks.SubnetworkIDNative,
Gas: 0,
Payload: []byte{},
Fee: 0,
Mass: 0,
}
}