Class: SignerService
modules/signer.SignerService
Service responsible for signing messages and sending transactions to the blockchain
const { signerService } = await initWithPrivateKeySigner(privateKey, rpcUrl);
signerService.signMessage(...);
Table of contents
Constructors
Accessors
Methods
- balance
- call
- chainName
- closeConnection
- connect
- emit
- init
- initEventHandlers
- on
- onInit
- publicKey
- publicKeyAndIdentityToken
- send
- signMessage
- signTypedData
Constructors
constructor
• new SignerService(_signer, _providerType)
Parameters
| Name | Type |
|---|---|
_signer |
Required<SignerT> |
_providerType |
ProviderType |
Accessors
accountInfo
• get accountInfo(): AccountInfo
Get account info, including chain id, chain name and user address.
signerService.accountInfo;
Returns
account info
address
• get address(): string
Get user address.
signerService.address;
Returns
string
user address
chainId
• get chainId(): number
Get current connection chain id.
signerService.chainId;
Returns
number
chain id
did
• get did(): string
Get current user DID
signerService.did;
Returns
string
DID
didHex
• get didHex(): string
Get current user DID address with hex representation of the chain id.
signerService.didHex;
Returns
string
DID address
isEthSigner
• get isEthSigner(): boolean
If signer is EIP-191 compliant https://eips.ethereum.org/EIPS/eip-191.
signerService.isEthSigner;
Returns
boolean
true if the signer is EIP-191 compliant.
provider
• get provider(): Provider
Get connection provider.
signerService.provider;
Returns
Provider
connection provider
providerType
• get providerType(): ProviderType
Get provider type of current signer connection.
signerService.providerType;
Returns
provider type
signer
• get signer(): Required<SignerT>
The instance of the ether library signer in use by the service
signerService.signer;
Returns
Required<SignerT>
signer
Methods
balance
▸ balance(): Promise<BigNumber>
Get current user balance.
signerService.getBalance();
Returns
Promise<BigNumber>
user balance
call
▸ call(options): Promise<string>
Makes a (readonly) call to a smart contract. https://docs.ethers.io/v5/single-page/#/v5/api/providers/provider/-%23-Provider-call
signerService.call({
to: ':0x00...0',
data: contract.interface.encodeFunctionData(...)
});
Parameters
| Name | Type | Description |
|---|---|---|
options |
TransactionRequest |
object with options |
Returns
Promise<string>
the result of the call
chainName
▸ chainName(): string
Get current chain name.
signerService.chainName();
Returns
string
chain name
closeConnection
▸ closeConnection(): Promise<boolean>
Close connection with the signer wallet.
signerService.closeConnection();
Returns
Promise<boolean>
true if connection was closed
connect
▸ connect(signer, providerType): Promise<void>
Parameters
| Name | Type |
|---|---|
signer |
Required<SignerT> |
providerType |
ProviderType |
Returns
Promise<void>
emit
▸ emit(e): Promise<void>
Parameters
| Name | Type |
|---|---|
e |
ProviderEvent |
Returns
Promise<void>
init
▸ init(): Promise<void>
Returns
Promise<void>
initEventHandlers
▸ initEventHandlers(): void
Add event handler for certain events
Returns
void
Requires
to be called after the connection to wallet was initialized
on
▸ on(event, cb): void
Parameters
| Name | Type |
|---|---|
event |
ProviderEvent |
cb |
any |
Returns
void
onInit
▸ onInit(initializer): void
Registers reinitialization of dependent service on signer reconnection
Parameters
| Name | Type |
|---|---|
initializer |
ServiceInitializer |
Returns
void
publicKey
▸ publicKey(): Promise<string>
Get current user public key.
signerService.publicKey();
Returns
Promise<string>
public key
publicKeyAndIdentityToken
▸ publicKeyAndIdentityToken(force?): Promise<IPubKeyAndIdentityToken>
Generate public key and identity token for authentication purposes.
signerService.publicKeyAndIdentityToken();
Parameters
| Name | Type | Default value | Description |
|---|---|---|---|
force |
boolean |
false |
when true recalculates token even if it is already present |
Returns
Promise<IPubKeyAndIdentityToken>
object with public key and identity token
send
▸ send(options): Promise<TransactionReceipt>
Send transaction to the blockchain.
signerService.send({
to: ':0x00...0',
data: contract.interface.encodeFunctionData(...)
});
Parameters
| Name | Type | Description |
|---|---|---|
options |
TransactionRequest |
object with options |
Returns
Promise<TransactionReceipt>
transaction receipt
signMessage
▸ signMessage(message): Promise<string>
Tries to create eth_sign conformant signature (https://eth.wiki/json-rpc/API#eth_sign).
Whether or not to hash the message prior to signature is depends on whether is signer EIP-191 compliant.
When running in browser isEthSigner variable should be stored in local storage.
signerService.signMessage(arrayify('Hello World'));
Parameters
| Name | Type | Description |
|---|---|---|
message |
Uint8Array |
The message to be signed. The message should have binary representation to avoid confusion of text with hexadecimal binary data |
Returns
Promise<string>
the signature
signTypedData
▸ signTypedData(domain, types, message): Promise<string>
Tries to create conformant EIP-712 signature (https://eips.ethereum.org/EIPS/eip-712).
signerService.signTypedData(
{ name: 'MyToken', version: '1.0' },
{ Model: [{ name: 'name', type: 'string' }, { name: 'type', type: 'string' }] },
{ name: 'MyToken', type: 'erc721' },
);
Parameters
| Name | Type | Description |
|---|---|---|
domain |
TypedDataDomain |
EIP-712 domain object |
types |
Record<string, TypedDataField[]> |
EIP-712 types object |
message |
Record<string, unknown> |
EIP-712 message object |
Returns
Promise<string>
the signature