Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
export decodeReceiptIdentifier only (#22)
* export decodeReceiptIdentifier only, instead of starcoin_types.ReceiptIdentifier and encoding.addressFromSCS

* fix typo

* add an interface ReceiptIdentifierView at js types level
  • Loading branch information
wk3368 committed May 24, 2021
1 parent 23233aa commit 28ca0e5
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 35 deletions.
22 changes: 10 additions & 12 deletions src/encoding/index.spec.ts
@@ -1,11 +1,9 @@
import { stripHexPrefix, addHexPrefix } from 'ethereumjs-util';
import { arrayify } from '@ethersproject/bytes';
import { addressToSCS, addressFromSCS, decodeEventKey, decodeTransactionPayload, decodeSignedUserTransaction, privateKeyToPublicKey, publicKeyToAuthKey, publicKeyToAddress, publicKeyToReceiptIdentifier, encodeReceiptIdentifier } from '.';
import { addressToSCS, decodeEventKey, decodeTransactionPayload, decodeSignedUserTransaction, privateKeyToPublicKey, publicKeyToAuthKey, publicKeyToAddress, publicKeyToReceiptIdentifier, encodeReceiptIdentifier, decodeReceiptIdentifier } from '.';
import { BcsSerializer } from '../lib/runtime/bcs';
import { toHexString } from '../utils/hex';
import { JsonrpcProvider } from '../providers/jsonrpc-provider';
import { encodeScriptFunction, generateRawUserTransaction, signRawUserTransaction } from "../utils/tx";
import { ReceiptIdentifier } from '../lib/runtime/starcoin_types';

test("encoding address", () => {
expect(addressToSCS("0x1").value.length).toBe(16);
Expand Down Expand Up @@ -156,9 +154,9 @@ test("encode && decode receipt identifier", () => {
const encodedStr = encodeReceiptIdentifier(address, authKey)
expect(encodedStr).toBe(encodedStrExcepted)

const receiptIdentifier = ReceiptIdentifier.decode(encodedStr)
expect(stripHexPrefix(addressFromSCS(receiptIdentifier.accountAddress))).toBe(address)
expect(receiptIdentifier.authKey.hex()).toBe(authKey)
const receiptIdentifier = decodeReceiptIdentifier(encodedStr)
expect(receiptIdentifier.accountAddress).toBe(address)
expect(receiptIdentifier.authKey).toBe(authKey)
})();

// address only
Expand All @@ -168,9 +166,9 @@ test("encode && decode receipt identifier", () => {
const encodedStr = encodeReceiptIdentifier(address)
expect(encodedStr).toBe(encodedStrExcepted)

const receiptIdentifier = ReceiptIdentifier.decode(encodedStr)
expect(stripHexPrefix(addressFromSCS(receiptIdentifier.accountAddress))).toBe(address)
expect(receiptIdentifier.authKey.hex()).toBe("")
const receiptIdentifier = decodeReceiptIdentifier(encodedStr)
expect(receiptIdentifier.accountAddress).toBe(address)
expect(receiptIdentifier.authKey).toBe("")
})();

// address + empty authKey
Expand All @@ -180,9 +178,9 @@ test("encode && decode receipt identifier", () => {
const encodedStr = encodeReceiptIdentifier(address, "")
expect(encodedStr).toBe(encodedStrExcepted)

const receiptIdentifier = ReceiptIdentifier.decode(encodedStr)
expect(stripHexPrefix(addressFromSCS(receiptIdentifier.accountAddress))).toBe(address)
expect(receiptIdentifier.authKey.hex()).toBe("")
const receiptIdentifier = decodeReceiptIdentifier(encodedStr)
expect(receiptIdentifier.accountAddress).toBe(address)
expect(receiptIdentifier.authKey).toBe("")
})();

});
11 changes: 9 additions & 2 deletions src/encoding/index.ts
Expand Up @@ -12,6 +12,7 @@ import {
StructTag,
TransactionPayload,
TypeTag,
ReceiptIdentifierView,
} from '../types';
import { fromHexString, toHexString } from '../utils/hex';
import { createUserTransactionHasher } from '../crypto_hash';
Expand Down Expand Up @@ -298,11 +299,17 @@ export function encodeReceiptIdentifier(addressStr: string, authKeyStr = ''): st
return new starcoin_types.ReceiptIdentifier(accountAddress, authKey).encode();
}

export function decodeReceiptIdentifier(value: string): ReceiptIdentifierView {
const receiptIdentifier = starcoin_types.ReceiptIdentifier.decode(value)
const accountAddress = stripHexPrefix(addressFromSCS(receiptIdentifier.accountAddress))
const authKey = receiptIdentifier.authKey.hex()
const receiptIdentifierView = { accountAddress, authKey }
return receiptIdentifierView
}

export function publicKeyToReceiptIdentifier(publicKey: string): string {
const address = publicKeyToAddress(publicKey)
const authKey = publicKeyToAuthKey(publicKey)
console.log(address)
console.log(authKey)
const receiptIdentifier = encodeReceiptIdentifier(stripHexPrefix(address), stripHexPrefix(authKey))
return receiptIdentifier
}
Expand Down
48 changes: 27 additions & 21 deletions src/types/index.ts
Expand Up @@ -111,17 +111,17 @@ export type SignatureType = 'Ed25519' | 'MultiEd25519';

export type TransactionAuthenticator =
| {
Ed25519: {
public_key: Ed25519PublicKey;
signature: Ed25519Signature;
};
}
Ed25519: {
public_key: Ed25519PublicKey;
signature: Ed25519Signature;
};
}
| {
MultiEd25519: {
public_key: MultiEd25519PublicKey;
signature: MultiEd25519Signature;
};
MultiEd25519: {
public_key: MultiEd25519PublicKey;
signature: MultiEd25519Signature;
};
};

// export type TransactionArgument =
// | { U8: number }
Expand Down Expand Up @@ -232,11 +232,11 @@ export interface ScriptABI {
export type AbortLocation =
| 'Script'
| {
Module: {
address: AccountAddress;
name: Identifier;
};
Module: {
address: AccountAddress;
name: Identifier;
};
};

// eslint-disable-next-line @typescript-eslint/naming-convention
export const TransactionVMStatus_Executed = 'Executed';
Expand All @@ -249,18 +249,24 @@ export type TransactionVMStatus =
| 'OutOfGas'
| 'MiscellaneousError'
| {
MoveAbort: { location: AbortLocation; abort_code: U64 };
}
MoveAbort: { location: AbortLocation; abort_code: U64 };
}
| {
ExecutionFailure: {
location: AbortLocation;
function: U16;
code_offset: U16;
};
}
ExecutionFailure: {
location: AbortLocation;
function: U16;
code_offset: U16;
};
}
| { Discard: { status_code: U64 } };

// Exported Types

export interface ReceiptIdentifierView {
accountAddress: string,
authKey: string
}

export interface RawUserTransactionView {
/// Sender's address.
sender: AccountAddress;
Expand Down

0 comments on commit 28ca0e5

Please sign in to comment.