Skip to content

Commit

Permalink
add hash_transaction()
Browse files Browse the repository at this point in the history
  • Loading branch information
v-almonacid committed Aug 8, 2020
1 parent 1a58872 commit d2cad53
Show file tree
Hide file tree
Showing 6 changed files with 57 additions and 20 deletions.
Expand Up @@ -41,6 +41,14 @@ public final void makeVkeyWitness(String txBodyHash, String sk, Promise promise)
.pour(promise);
}

@ReactMethod
public final void hashTransaction(String txBody, Promise promise) {
Native.I
.hashTransaction(new RPtr(txBody))
.map(RPtr::toJs)
.pour(promise);
}

// BigNum

@ReactMethod
Expand Down
Expand Up @@ -18,7 +18,7 @@ private Native() { }
// Utils
public final native Result<RPtr> makeIcarusBootstrapWitness(RPtr txBodyHash, RPtr addr, RPtr key);
public final native Result<RPtr> makeVkeyWitness(RPtr txBodyHash, RPtr sk);
// public final native Result<RPtr> hashTransaction(RPtr txBody);
public final native Result<RPtr> hashTransaction(RPtr txBody);

// BigNum
public final native Result<RPtr> bigNumFromStr(String str);
Expand Down
43 changes: 24 additions & 19 deletions example/App.js
Expand Up @@ -21,6 +21,7 @@ import {
Coin,
Ed25519KeyHash,
LinearFee,
hash_transaction,
make_vkey_witness,
make_icarus_bootstrap_witness,
StakeCredential,
Expand Down Expand Up @@ -66,7 +67,6 @@ export default class App extends Component<{}> {
(await (await bigNum.checked_add(bigNum2)).to_str()) === '1000500',
'BigNum.checked_add()',
)
console.log(await (await bigNum.checked_sub(bigNum2)).to_str())
assert(
(await (await bigNum.checked_sub(bigNum2)).to_str()) === '999500',
'BigNum.checked_sub()',
Expand Down Expand Up @@ -277,24 +277,6 @@ export default class App extends Component<{}> {
'LinearFee.constant() should match original input',
)

// ------------------------------------------------
// -------------------- Utils ---------------------
const bootstrapWitness = await make_icarus_bootstrap_witness(
txHash,
byronAddress,
bip32PrivateKey,
)
assert(
bootstrapWitness instanceof BootstrapWitness,
'make_icarus_bootstrap_witness should return instance of BootstrapWitness',
)
const sk = await bip32PrivateKey.to_raw_key()
const vkeywitness = await make_vkey_witness(txHash, sk)
assert(
vkeywitness instanceof Vkeywitness,
'make_vkey_witness should return instance of Vkeywitness',
)

// ------------------------------------------------
// -------------- BootstrapWitnesses --------------
const bootstrapWits = await BootstrapWitnesses.new()
Expand Down Expand Up @@ -327,6 +309,29 @@ export default class App extends Component<{}> {
Buffer.from(bodyHex, 'hex'),
)

// ------------------------------------------------
// -------------------- Utils ---------------------
const bootstrapWitness = await make_icarus_bootstrap_witness(
txHash,
byronAddress,
bip32PrivateKey,
)
assert(
bootstrapWitness instanceof BootstrapWitness,
'make_icarus_bootstrap_witness should return instance of BootstrapWitness',
)
const sk = await bip32PrivateKey.to_raw_key()
const vkeywitness = await make_vkey_witness(txHash, sk)
assert(
vkeywitness instanceof Vkeywitness,
'make_vkey_witness should return instance of Vkeywitness',
)
const hash = await hash_transaction(txBody)
assert(
hash instanceof TransactionHash,
'hash_transaction should return instance of TransactionHash',
)

// ------------------------------------------------
// ----------------- Transaction ------------------
const tx = await Transaction.new(txBody, witSet)
Expand Down
4 changes: 4 additions & 0 deletions index.d.ts
Expand Up @@ -21,6 +21,10 @@ export const make_vkey_witness: (
sk: PrivateKey,
) => Promise<Vkeywitness>

export const hash_transaction: (
txBody: TransactionBody,
) => Promise<TransactionHash>

/**
* Generic u64 wrapper for platforms that don't support u64 or BigInt/etc
* This is an unsigned type - no negative numbers.
Expand Down
10 changes: 10 additions & 0 deletions index.js
Expand Up @@ -75,6 +75,16 @@ export const make_vkey_witness = async (txBodyHash, sk) => {
return Ptr._wrap(ret, Vkeywitness);
}

/**
* @param {TransactionBody} txBody
* @returns {Promise<TransactionHash>}
*/
export const hash_transaction = async (txBody) => {
const txBodyPtr = Ptr._assertClass(txBody, TransactionBody);
const ret = await HaskellShelley.hashTransaction(txBodyPtr);
return Ptr._wrap(ret, TransactionHash);
}

export class BigNum extends Ptr {

/**
Expand Down
10 changes: 10 additions & 0 deletions ios/HaskellShelley.m
Expand Up @@ -34,6 +34,16 @@ @implementation HaskellShelley
}] exec:@[txBodyHashPtr, skPtr] andResolve:resolve orReject:reject];
}

RCT_EXPORT_METHOD(hashTransaction:(nonnull NSString *)txBodyPtr withResolve:(RCTPromiseResolveBlock)resolve andReject:(RCTPromiseRejectBlock)reject)
{
[[CSafeOperation new:^NSString*(NSArray* params, CharPtr* error) {
RPtr txBody = [txBodyPtr rPtr];
RPtr result;
utils_hash_transaction(txBody, &result, error);
return nil;
}] exec:txBodyPtr andResolve:resolve orReject:reject];
}

// BigNum

RCT_EXPORT_METHOD(bigNumFromStr:(nonnull NSString *)string withResolve:(RCTPromiseResolveBlock)resolve andReject:(RCTPromiseRejectBlock)reject)
Expand Down

0 comments on commit d2cad53

Please sign in to comment.