简体   繁体   中英

Can I send transactions async using polkadot-js

I have walked through the official document and found a page about how to transfer using polkadot-jshttps://polkadot.js.org/docs/api/examples/promise/make-transfer

const transfer = api.tx.balances.transfer(BOB, 12345);
const hash = await transfer.signAndSend(alice);

I want to know if I can split the signAndSend method into two and execute at different machines. like in a client machine, in the browser compute the signature.

const transfer = api.tx.balances.transfer(BOB, 12345);
const signature = await transfer.signAsync(alice);

and then in the server side send the transfer transaction.

const mockSigner = createMockSigner(signature); // signature is computed from the client side and send to server over HTTP
const transfer = api.tx.balances.transfer(BOB, 12345);
const res = transfer.send({signer: mockSigner});

The above example doesn't work, I just want to express if I can do sign and send in different machines.

Signing a transaction on one computer and sending it from a second computer is definitely possible.

PolkadotJS Tools contains a method for building and signing a transaction offline. You can find the source here . Please note that building the transaction in the browser will still require access to a polkadot node (the endpoint in the code).

The signer sendOffline command has the exact same API, but will not broadcast the transaction. submit and sendOffline must be connected to a node to fetch the current metadata and construct a valid transaction. Their API has the format:

Therefore, you'd need to run a light client in the browser in order to have access to current block information.

The offline sign version: https://gist.github.com/xcaptain/4d190232411dcf27441d9fadd7ff6988

The online sign version:

const transfer = api.tx.balances.transfer(BOB, 12345);
const signedExtrinsic = await transfer.signAsync(alice).toJSON();
await api.rpc.author.submitExtrinsic(signedExtrinsic);

Don't know what's the difference, but they both work.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM