From 8b7c48c24723575e3965890a301b6e9bb751761b Mon Sep 17 00:00:00 2001 From: Hans Moog <hm@mkjc.net> Date: Mon, 1 Jul 2019 15:41:27 +0200 Subject: [PATCH] Feat: leaving office (sync repo) --- packages/model/value_transaction/constants.go | 11 +++++++++++ .../model/value_transaction/value_transaction.go | 10 ++++++---- packages/model/valuebundle/hasher.go | 14 ++++++++++++++ packages/model/valuebundle/metabundle.go | 7 +------ 4 files changed, 32 insertions(+), 10 deletions(-) create mode 100644 packages/model/valuebundle/hasher.go diff --git a/packages/model/value_transaction/constants.go b/packages/model/value_transaction/constants.go index 3025e1c7..b20a6d4f 100644 --- a/packages/model/value_transaction/constants.go +++ b/packages/model/value_transaction/constants.go @@ -1,5 +1,11 @@ package value_transaction +import ( + "strings" + + "github.com/iotaledger/goshimmer/packages/ternary" +) + const ( ADDRESS_OFFSET = 0 VALUE_OFFSET = ADDRESS_END @@ -12,6 +18,7 @@ const ( TIMESTAMP_SIZE = 27 NONCE_SIZE = 81 SIGNATURE_MESSAGE_FRAGMENT_SIZE = 6561 + BUNDLE_ESSENCE_SIZE = ADDRESS_SIZE + VALUE_SIZE + SIGNATURE_MESSAGE_FRAGMENT_SIZE ADDRESS_END = ADDRESS_OFFSET + ADDRESS_SIZE VALUE_END = VALUE_OFFSET + VALUE_SIZE @@ -21,3 +28,7 @@ const ( TOTAL_SIZE = SIGNATURE_MESSAGE_FRAGMENT_END ) + +var ( + EMPTY_SIGNATURE = ternary.Trytes(strings.Repeat("9", SIGNATURE_MESSAGE_FRAGMENT_SIZE/ternary.NUMBER_OF_TRITS_IN_A_TRYTE)) +) diff --git a/packages/model/value_transaction/value_transaction.go b/packages/model/value_transaction/value_transaction.go index b014d3ce..20054207 100644 --- a/packages/model/value_transaction/value_transaction.go +++ b/packages/model/value_transaction/value_transaction.go @@ -192,15 +192,17 @@ func (this *ValueTransaction) SetTimestamp(timestamp uint) bool { return false } -func (this *ValueTransaction) GetBundleEssence() (result ternary.Trytes) { +func (this *ValueTransaction) GetBundleEssence() (result ternary.Trits) { this.addressMutex.RLock() this.valueMutex.RLock() this.signatureMessageFragmentMutex.RLock() + result = make(ternary.Trits, BUNDLE_ESSENCE_SIZE) + + copy(result[0:], this.trits[ADDRESS_OFFSET:VALUE_END]) + if this.GetValue() < 0 { - result = this.trits[ADDRESS_OFFSET:VALUE_END].ToTrytes() + this.trits[SIGNATURE_MESSAGE_FRAGMENT_OFFSET:SIGNATURE_MESSAGE_FRAGMENT_END].ToTrytes() - } else { - result = this.trits[ADDRESS_OFFSET:VALUE_END].ToTrytes() + copy(result[:VALUE_END], this.trits[SIGNATURE_MESSAGE_FRAGMENT_OFFSET:SIGNATURE_MESSAGE_FRAGMENT_END]) } this.signatureMessageFragmentMutex.RUnlock() diff --git a/packages/model/valuebundle/hasher.go b/packages/model/valuebundle/hasher.go new file mode 100644 index 00000000..bc2f0d99 --- /dev/null +++ b/packages/model/valuebundle/hasher.go @@ -0,0 +1,14 @@ +package valuebundle + +import ( + "github.com/iotaledger/goshimmer/packages/curl" +) + +const ( + CURLP81_HASH_LENGTH = 243 + CURLP81_ROUNDS = 81 +) + +var ( + Hasher = curl.NewBatchHasher(CURLP81_HASH_LENGTH, CURLP81_ROUNDS) +) diff --git a/packages/model/valuebundle/metabundle.go b/packages/model/valuebundle/metabundle.go index a5714d89..47ebb409 100644 --- a/packages/model/valuebundle/metabundle.go +++ b/packages/model/valuebundle/metabundle.go @@ -27,10 +27,5 @@ func (bundle *MetaBundle) GetHash() ternary.Trytes { } func CalculateBundleHash(transactions []*value_transaction.ValueTransaction) ternary.Trytes { - transactions[0].GetAddress() - transactions[0].GetSignatureMessageFragment() - transactions[0].GetTimestamp() - transactions[0].GetValue() - //transactions[0].GetData()[value_transaction.SIGNATURE_MESSAGE_FRAGMENT_OFFSET] - return ternary.Trytes("A") + return (<-Hasher.Hash(transactions[0].GetBundleEssence())).ToTrytes() } -- GitLab