Custom Universal Signer
Overview
If you don't have a supported library signer or want to create a custom implementation, you can construct a Universal Signer manually.
Custom Universal Signer
PushChain.utils.signer.construct(account, {options}): Promise<UniversalSigner>
const account = {
address: '<WALLET_ADDRESS>',
chain: '<PushChain.CONSTANTS.CHAIN.CHAIN_TYPE'>
};
const customSignAndSendTransaction = async (unsignedTx) => {
return new Uint8Array('<RESPONSE_TO_SIGN_AND_SEND_TRANSACTION>');
};
const customSignMessage = async (data) => {
return new Uint8Array('<RESPONSE_TO_SIGN_MESSAGE>');
};
const customSignTypedData = async (typedDataArgs) => {
return new Uint8Array('<RESPONSE_TO_SIGN_TYPED_DATA>');
};
const skeleton = PushChain.utils.signer.construct(account, {
signMessage: customSignMessage,
signTransaction: customSignTransaction,
signTypedData: customSignTypedData
});
const universalSigner = await PushChain.utils.signer.toUniversal(skeleton);
TheseArguments
are mandatory
Arguments | Type | Description |
---|---|---|
account | UniversalAccount | Account information containing address and chain |
options | Object | Object containing the signing function implementations |
options.signAndSendTransaction | (unsignedTx: Uint8Array) => Promise<Uint8Array> | Function to sign transaction data |
options.signMessage | (data: Uint8Array) => Promise<Uint8Array> | Function to sign raw message data |
options.signTypedData | (params) => Promise<Uint8Array> | Function to sign typed data (EIP-712) |
Returns `UniversalSignerSkeleton` <object>
// UniversalSignerSkeleton object
{
signerId: 'CustomGeneratedSigner',
account: {
chain: 'eip155:42101',
address: '0x98cA97d2FB78B3C0597E2F78cd11868cACF423C5'
},
signMessage: [AsyncFunction: customSignMessage],
signAndSendTransaction: [AsyncFunction: customSignAndSendTransaction],
signTypedData: [AsyncFunction: customSignTypedData]
}
Live Playground: Creating Custom Universal Signer from Ethers.js 👇.
VIRTUAL NODE IDE
Next Steps
- Initialize Push Chain Client with the Universal Signer
- Abstract away creation of the Universal Signer using UI Kit