Skip to content
Snippets Groups Projects
Commit 5fe73fc4 authored by Fabian Waszkiewicz's avatar Fabian Waszkiewicz
Browse files

Add binary convertion functions into wax base interface

parent a539fe2f
No related branches found
No related tags found
1 merge request!223Add binary convertion functions
Pipeline #106910 passed
......@@ -344,6 +344,35 @@ test.describe('Wax object interface foundation tests', () => {
expect(retVal.binHex).toBe('a5c766fc0da60827c9640200046f746f6d076330666633336108657778686e6a626a98083109696e69746d696e65720367746764000000000000002320bcbe00180002000000011f7c6eb7a30681d77606a1491be2869e8112fee5241ec13cea5c7b4f54edc8d145269172f88359bb190fb26b362c81ccdf02bb56eb1d09daea3a381e5580e52f58');
});
test('Should be able to convert transaction json to binary form', async ({ waxTest }) => {
const retVal = await waxTest(async({ base }, transaction) => {
return base.convertTransactionToBinaryForm(JSON.parse(transaction));
}, transaction);
expect(retVal).toEqual('ff86c404c24b152fb7610100046f746f6d076330666633336108657778686e6a626a98080000')
});
test('Should be able to convert binary transaction to json form', async ({ waxTest }) => {
const retVal = await waxTest(async({ base }) => {
return base.convertTransactionFromBinaryForm('ff86c404c24b152fb7610100046f746f6d076330666633336108657778686e6a626a98080000');
});
expect(retVal).toEqual({
"expiration": "2021-12-13T11:31:33",
"extensions": [],
"operations": [{
"vote": {
"author": "c0ff33a",
"permlink": "ewxhnjbj",
"voter": "otom",
"weight": 2200
}
}],
"ref_block_num": 34559,
"ref_block_prefix": 1271006404,
"signatures": []
});
});
test('Should be able to create a recurrent transfer with underlying extensions using transaction interface', async ({ waxTest }) => {
const retVal = await waxTest(async({ wax, base }) => {
......
......@@ -134,6 +134,20 @@ export class WaxBaseApi implements IWaxBaseInterface {
return props;
}
public convertTransactionToBinaryForm(transaction: ApiTransaction): THexString {
const tx = this.createTransactionFromJson(transaction);
const conversionResult = safeWasmCall(() => this.proto.cpp_serialize_transaction(tx.toString()));
return this.extract(conversionResult);
}
public convertTransactionFromBinaryForm(transaction: THexString): ApiTransaction {
const conversionResult = safeWasmCall(() => this.proto.cpp_deserialize_transaction(transaction));
return JSON.parse(this.extract(conversionResult));
}
private naiAssetToLong(amount: number, precision: number): Long {
let satoshisValue = Long.fromNumber(amount).multiply(10 ** precision);
......
......@@ -846,6 +846,24 @@ export interface IWaxBaseInterface {
*/
createTransactionWithTaPoS(taposBlockId: TBlockHash, expirationTime?: TTimestamp): ITransaction;
/**
* Converts given transaction from Hive API-form JSON to HF26 specific binary form
*
* @param {ApiTransaction} transaction transaction in Hive API-form JSON
*
* @returns {THexString} transaction in hexstring
*/
convertTransactionToBinaryForm(transaction: ApiTransaction): THexString;
/**
* Converts given transaction from HF26 specific binary form to Hive API-form JSON
*
* @param {THexString} transaction transaction in hexstring
*
* @returns {ApiTransaction} transaction in Hive API-form JSON
*/
convertTransactionFromBinaryForm(transaction: THexString): ApiTransaction;
/**
* Deletes the created wax proto_protocol instance
*/
......
......@@ -294,6 +294,7 @@ EMSCRIPTEN_BINDINGS(wax_api_instance) {
.function("cpp_calculate_sig_digest", &proto_protocol_wasm::cpp_calculate_sig_digest)
.function("cpp_calculate_legacy_sig_digest", &proto_protocol_wasm::cpp_calculate_legacy_sig_digest)
.function("cpp_serialize_transaction", &proto_protocol_wasm::cpp_serialize_transaction)
.function("cpp_deserialize_transaction", &proto_protocol_wasm::cpp_deserialize_transaction)
.function("cpp_proto_to_api", &proto_protocol_wasm::cpp_proto_to_api)
.function("cpp_proto_to_legacy_api", &proto_protocol_wasm::cpp_proto_to_legacy_api)
.function("cpp_api_to_proto", &proto_protocol_wasm::cpp_api_to_proto)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment