Skip to content

Commit 01234ca

Browse files
committed
Applied catbuffer on aggregate transaction
1 parent 416ffda commit 01234ca

20 files changed

+81
-60
lines changed

src/infrastructure/catbuffer/AggregateTransactionBuilder.ts

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,10 @@
1919
*** along with Catapult. If not, see <http://www.gnu.org/licenses/>.
2020
**/
2121

22-
import { AddressAliasTransactionBodyBuilder } from './AddressAliasTransactionBodyBuilder';
23-
import { AddressDto } from './AddressDto';
24-
import { AliasActionDto } from './AliasActionDto';
2522
import { AmountDto } from './AmountDto';
2623
import { EntityTypeDto } from './EntityTypeDto';
2724
import { GeneratorUtils } from './GeneratorUtils';
2825
import { KeyDto } from './KeyDto';
29-
import { NamespaceIdDto } from './NamespaceIdDto';
3026
import { SignatureDto } from './SignatureDto';
3127
import { TimestampDto } from './TimestampDto';
3228
import { TransactionBuilder } from './TransactionBuilder';
@@ -129,7 +125,7 @@ export class AggregateTransactionBuilder extends TransactionBuilder {
129125
newArray = GeneratorUtils.concatTypedArrays(newArray, payloadSizeBytes);
130126
const transactionBytes = this.transactions;
131127
newArray = GeneratorUtils.concatTypedArrays(newArray, transactionBytes);
132-
const cosignaturesBytes = this.transactions;
128+
const cosignaturesBytes = this.cosignatures;
133129
newArray = GeneratorUtils.concatTypedArrays(newArray, cosignaturesBytes);
134130
return newArray;
135131
}

src/model/transaction/AccountAddressRestrictionTransaction.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
* limitations under the License.
1515
*/
1616

17-
import { RawAddress } from '../../core/format';
17+
import { Convert, RawAddress } from '../../core/format';
1818
import { Builder } from '../../infrastructure/builders/AccountRestrictionsAddressTransaction';
1919
import {VerifiableTransaction} from '../../infrastructure/builders/VerifiableTransaction';
2020
import { AccountAddressRestrictionModificationBuilder } from '../../infrastructure/catbuffer/AccountAddressRestrictionModificationBuilder';
@@ -151,10 +151,8 @@ export class AccountAddressRestrictionTransaction extends Transaction {
151151
* @returns {Uint8Array}
152152
*/
153153
protected generateEmbeddedBytes(): Uint8Array {
154-
const signerBuffer = new Uint8Array(32);
155-
156154
const transactionBuilder = new EmbeddedAccountAddressRestrictionTransactionBuilder(
157-
new KeyDto(signerBuffer),
155+
new KeyDto(Convert.hexToUint8(this.signer!.publicKey)),
158156
this.versionToDTO(),
159157
TransactionType.ACCOUNT_RESTRICTION_ADDRESS.valueOf(),
160158
this.restrictionType.valueOf(),

src/model/transaction/AccountLinkTransaction.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -145,10 +145,8 @@ export class AccountLinkTransaction extends Transaction {
145145
* @returns {Uint8Array}
146146
*/
147147
protected generateEmbeddedBytes(): Uint8Array {
148-
const signerBuffer = new Uint8Array(32);
149-
150148
const transactionBuilder = new EmbeddedAccountLinkTransactionBuilder(
151-
new KeyDto(signerBuffer),
149+
new KeyDto(Convert.hexToUint8(this.signer!.publicKey)),
152150
this.versionToDTO(),
153151
TransactionType.LINK_ACCOUNT.valueOf(),
154152
new KeyDto(Convert.hexToUint8(this.remoteAccountKey)),

src/model/transaction/AccountMosaicRestrictionTransaction.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,13 @@
1414
* limitations under the License.
1515
*/
1616

17+
import { Convert } from '../../core/format';
1718
import { Builder } from '../../infrastructure/builders/AccountRestrictionsMosaicTransaction';
1819
import {VerifiableTransaction} from '../../infrastructure/builders/VerifiableTransaction';
1920
import { AccountMosaicRestrictionModificationBuilder } from '../../infrastructure/catbuffer/AccountMosaicRestrictionModificationBuilder';
2021
import { AccountMosaicRestrictionTransactionBuilder } from '../../infrastructure/catbuffer/AccountMosaicRestrictionTransactionBuilder';
2122
import { AmountDto } from '../../infrastructure/catbuffer/AmountDto';
2223
import { EmbeddedAccountMosaicRestrictionTransactionBuilder } from '../../infrastructure/catbuffer/EmbeddedAccountMosaicRestrictionTransactionBuilder';
23-
import { EntityTypeDto } from '../../infrastructure/catbuffer/EntityTypeDto';
2424
import { KeyDto } from '../../infrastructure/catbuffer/KeyDto';
2525
import { SignatureDto } from '../../infrastructure/catbuffer/SignatureDto';
2626
import { TimestampDto } from '../../infrastructure/catbuffer/TimestampDto';
@@ -150,10 +150,8 @@ export class AccountMosaicRestrictionTransaction extends Transaction {
150150
* @returns {Uint8Array}
151151
*/
152152
protected generateEmbeddedBytes(): Uint8Array {
153-
const signerBuffer = new Uint8Array(32);
154-
155153
const transactionBuilder = new EmbeddedAccountMosaicRestrictionTransactionBuilder(
156-
new KeyDto(signerBuffer),
154+
new KeyDto(Convert.hexToUint8(this.signer!.publicKey)),
157155
this.versionToDTO(),
158156
TransactionType.ACCOUNT_RESTRICTION_MOSAIC.valueOf(),
159157
this.restrictionType.valueOf(),

src/model/transaction/AccountOperationRestrictionTransaction.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
* limitations under the License.
1515
*/
1616

17+
import { Convert } from '../../core/format';
1718
import { Builder } from '../../infrastructure/builders/AccountRestrictionsEntityTypeTransaction';
1819
import {VerifiableTransaction} from '../../infrastructure/builders/VerifiableTransaction';
1920
import { AccountOperationRestrictionModificationBuilder } from '../../infrastructure/catbuffer/AccountOperationRestrictionModificationBuilder';
@@ -148,10 +149,8 @@ export class AccountOperationRestrictionTransaction extends Transaction {
148149
* @returns {Uint8Array}
149150
*/
150151
protected generateEmbeddedBytes(): Uint8Array {
151-
const signerBuffer = new Uint8Array(32);
152-
153152
const transactionBuilder = new EmbeddedAccountOperationRestrictionTransactionBuilder(
154-
new KeyDto(signerBuffer),
153+
new KeyDto(Convert.hexToUint8(this.signer!.publicKey)),
155154
this.versionToDTO(),
156155
TransactionType.ACCOUNT_RESTRICTION_OPERATION.valueOf(),
157156
this.restrictionType.valueOf(),

src/model/transaction/AddressAliasTransaction.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
* limitations under the License.
1515
*/
1616

17-
import { RawAddress } from '../../core/format';
17+
import { Convert, RawAddress } from '../../core/format';
1818
import { Builder } from '../../infrastructure/builders/AddressAliasTransaction';
1919
import { VerifiableTransaction } from '../../infrastructure/builders/VerifiableTransaction';
2020
import { AddressAliasTransactionBuilder } from '../../infrastructure/catbuffer/AddressAliasTransactionBuilder';
@@ -163,10 +163,8 @@ export class AddressAliasTransaction extends Transaction {
163163
* @returns {Uint8Array}
164164
*/
165165
protected generateEmbeddedBytes(): Uint8Array {
166-
const signerBuffer = new Uint8Array(32);
167-
168166
const transactionBuilder = new EmbeddedAddressAliasTransactionBuilder(
169-
new KeyDto(signerBuffer),
167+
new KeyDto(Convert.hexToUint8(this.signer!.publicKey)),
170168
this.versionToDTO(),
171169
TransactionType.ADDRESS_ALIAS.valueOf(),
172170
this.actionType.valueOf(),

src/model/transaction/AggregateTransaction.ts

Lines changed: 44 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,16 @@
1515
*/
1616

1717
import { SignSchema } from '../../core/crypto';
18-
import { Builder } from '../../infrastructure/builders/AggregateTransaction';
18+
import { Convert } from '../../core/format';
1919
import { AggregateTransaction as AggregatedTransactionCore} from '../../infrastructure/builders/AggregateTransaction';
20+
import { Builder } from '../../infrastructure/builders/AggregateTransaction';
21+
import { AggregateTransactionBuilder } from '../../infrastructure/catbuffer/AggregateTransactionBuilder';
22+
import { AmountDto } from '../../infrastructure/catbuffer/AmountDto';
23+
import { CosignatureBuilder } from '../../infrastructure/catbuffer/CosignatureBuilder';
24+
import { GeneratorUtils } from '../../infrastructure/catbuffer/GeneratorUtils';
25+
import { KeyDto } from '../../infrastructure/catbuffer/KeyDto';
26+
import { SignatureDto } from '../../infrastructure/catbuffer/SignatureDto';
27+
import { TimestampDto } from '../../infrastructure/catbuffer/TimestampDto';
2028
import { Account } from '../account/Account';
2129
import { PublicAccount } from '../account/PublicAccount';
2230
import { NetworkType } from '../blockchain/NetworkType';
@@ -209,14 +217,47 @@ export class AggregateTransaction extends Transaction {
209217
* @returns {Uint8Array}
210218
*/
211219
protected generateBytes(): Uint8Array {
212-
throw new Error('Not implemented');
220+
const signerBuffer = new Uint8Array(32);
221+
const signatureBuffer = new Uint8Array(64);
222+
223+
let transactions = Uint8Array.from([]);
224+
this.innerTransactions.forEach((transaction) => {
225+
const transactionByte = transaction.toAggregateTransactionBytes();
226+
transactions = GeneratorUtils.concatTypedArrays(transactions, transactionByte);
227+
});
228+
229+
const cosignatures = Uint8Array.from([]);
230+
this.cosignatures.forEach((cosignature) => {
231+
const signerBytes = Convert.hexToUint8(cosignature.signer.publicKey);
232+
const signatureBytes = Convert.hexToUint8(cosignature.signature);
233+
const cosignatureBytes = new CosignatureBuilder(
234+
new KeyDto(signerBytes),
235+
new SignatureDto(signatureBytes),
236+
).serialize();
237+
transactions = GeneratorUtils.concatTypedArrays(cosignatures, cosignatureBytes);
238+
});
239+
240+
console.log('cosignatures', Convert.uint8ToHex(cosignatures));
241+
console.log('transactions', Convert.uint8ToHex(transactions));
242+
243+
const transactionBuilder = new AggregateTransactionBuilder(
244+
new SignatureDto(signatureBuffer),
245+
new KeyDto(signerBuffer),
246+
this.versionToDTO(),
247+
this.type.valueOf(),
248+
new AmountDto(this.maxFee.toDTO()),
249+
new TimestampDto(this.deadline.toDTO()),
250+
transactions,
251+
cosignatures,
252+
);
253+
return transactionBuilder.serialize();
213254
}
214255

215256
/**
216257
* @internal
217258
* @returns {Uint8Array}
218259
*/
219260
protected generateEmbeddedBytes(): Uint8Array {
220-
throw new Error('Not implemented');
261+
throw new Error('Method not implemented');
221262
}
222263
}

src/model/transaction/LockFundsTransaction.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -176,10 +176,8 @@ export class LockFundsTransaction extends Transaction {
176176
* @returns {Uint8Array}
177177
*/
178178
protected generateEmbeddedBytes(): Uint8Array {
179-
const signerBuffer = new Uint8Array(32);
180-
181179
const transactionBuilder = new EmbeddedHashLockTransactionBuilder(
182-
new KeyDto(signerBuffer),
180+
new KeyDto(Convert.hexToUint8(this.signer!.publicKey)),
183181
this.versionToDTO(),
184182
TransactionType.LOCK.valueOf(),
185183
new UnresolvedMosaicBuilder(new UnresolvedMosaicIdDto(this.mosaic.id.id.toDTO()),

src/model/transaction/ModifyMultisigAccountTransaction.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -172,10 +172,8 @@ export class ModifyMultisigAccountTransaction extends Transaction {
172172
* @returns {Uint8Array}
173173
*/
174174
protected generateEmbeddedBytes(): Uint8Array {
175-
const signerBuffer = new Uint8Array(32);
176-
177175
const transactionBuilder = new EmbeddedMultisigAccountModificationTransactionBuilder(
178-
new KeyDto(signerBuffer),
176+
new KeyDto(Convert.hexToUint8(this.signer!.publicKey)),
179177
this.versionToDTO(),
180178
TransactionType.MODIFY_MULTISIG_ACCOUNT.valueOf(),
181179
this.minRemovalDelta,

src/model/transaction/MosaicAddressRestrictionTransaction.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
* limitations under the License.
1515
*/
1616

17-
import { RawAddress } from '../../core/format';
17+
import { Convert, RawAddress } from '../../core/format';
1818
import { Builder } from '../../infrastructure/builders/MosaicAddressRestrictionTransaction';
1919
import {VerifiableTransaction} from '../../infrastructure/builders/VerifiableTransaction';
2020
import { AmountDto } from '../../infrastructure/catbuffer/AmountDto';
@@ -188,10 +188,8 @@ export class MosaicAddressRestrictionTransaction extends Transaction {
188188
* @returns {Uint8Array}
189189
*/
190190
protected generateEmbeddedBytes(): Uint8Array {
191-
const signerBuffer = new Uint8Array(32);
192-
193191
const transactionBuilder = new EmbeddedMosaicAddressRestrictionTransactionBuilder(
194-
new KeyDto(signerBuffer),
192+
new KeyDto(Convert.hexToUint8(this.signer!.publicKey)),
195193
this.versionToDTO(),
196194
TransactionType.MOSAIC_ADDRESS_RESTRICTION.valueOf(),
197195
new UnresolvedMosaicIdDto(this.mosaicId.id.toDTO()),

0 commit comments

Comments
 (0)