Web3 Eth Accounts
Web3 Eth Accounts
_eth-accounts:
.. include:: include_announcement.rst
=========
web3.eth.accounts
=========
.. note:: This package has NOT been audited and might potentially be unsafe. Take
precautions to clear memory properly, store the private keys safely, and test
transaction receiving and sending functionality properly before using in
production!
.. code-block:: javascript
------------------------------------------------------------------------------
.. _accounts-create:
create
=====================
.. code-block:: javascript
web3.eth.accounts.create([entropy]);
----------
Parameters
----------
.. _eth-accounts-create-return:
-------
Returns
-------
-------
Example
-------
.. code-block:: javascript
web3.eth.accounts.create();
> {
address: "0xb8CE9ab6943e0eCED004cDe8e3bBed6568B2Fa01",
privateKey:
"0x348ce564d427a3311b6536bbcff9390d69395b06ed6c486954e971d960fe8709",
signTransaction: function(tx){...},
sign: function(data){...},
encrypt: function(password){...}
}
web3.eth.accounts.create('2435@#@#@±±±±!!!!
678543213456764321§34567543213456785432134567');
> {
address: "0xF2CD2AA0c7926743B1D4310b2BC984a0a453c3d4",
privateKey:
"0xd7325de5c2c1cf0009fac77d3d04a9c004b038883446b065871bc3e831dcd098",
signTransaction: function(tx){...},
sign: function(data){...},
encrypt: function(password){...}
}
web3.eth.accounts.create(web3.utils.randomHex(32));
> {
address: "0xe78150FaCD36E8EB00291e251424a0515AA1FF05",
privateKey:
"0xcc505ee6067fba3f6fc2050643379e190e087aeffe5d958ab9f2f3ed3800fa4e",
signTransaction: function(tx){...},
sign: function(data){...},
encrypt: function(password){...}
}
------------------------------------------------------------------------------
privateKeyToAccount
=====================
.. code-block:: javascript
web3.eth.accounts.privateKeyToAccount(privateKey);
-------
Returns
-------
``Object`` - The account object with the :ref:`structure seen here <eth-accounts-
create-return>`.
-------
Example
-------
.. code-block:: javascript
web3.eth.accounts.privateKeyToAccount('0x348ce564d427a3311b6536bbcff9390d69395b06ed
6c486954e971d960fe8709');
> {
address: '0xb8CE9ab6943e0eCED004cDe8e3bBed6568B2Fa01',
privateKey:
'0x348ce564d427a3311b6536bbcff9390d69395b06ed6c486954e971d960fe8709',
signTransaction: function(tx){...},
sign: function(data){...},
encrypt: function(password){...}
}
web3.eth.accounts.privateKeyToAccount('348ce564d427a3311b6536bbcff9390d69395b06ed6c
486954e971d960fe8709');
> {
address: '0xb8CE9ab6943e0eCED004cDe8e3bBed6568B2Fa01',
privateKey:
'0x348ce564d427a3311b6536bbcff9390d69395b06ed6c486954e971d960fe8709',
signTransaction: function(tx){...},
sign: function(data){...},
encrypt: function(password){...}
}
------------------------------------------------------------------------------
.. _eth-accounts-signtransaction:
signTransaction
=====================
.. code-block:: javascript
----------
Parameters
----------
-------
Returns
-------
-------
Example
-------
.. code-block:: javascript
web3.eth.accounts.signTransaction({
to: '0xF0109fC8DF283027b6285cc889F5aA624EaC1F55',
value: '1000000000',
gas: 2000000
}, '0x4c0883a69102937d6231471b5dbb6204fe5129617082792ae468d01a3f362318')
.then(console.log);
> {
messageHash:
'0x88cfbd7e51c7a40540b233cf68b62ad1df3e92462f1c6018d6d67eae0f3b08f5',
v: '0x25',
r: '0xc9cf86333bcb065d140032ecaab5d9281bde80f21b9687b3e94161de42d51895',
s: '0x727a108a0b8d101465414033c3f705a9c7b826e596766046ee1183dbc8aeaa68',
rawTransaction:
'0xf869808504e3b29200831e848094f0109fc8df283027b6285cc889f5aa624eac1f55843b9aca0080
25a0c9cf86333bcb065d140032ecaab5d9281bde80f21b9687b3e94161de42d51895a0727a108a0b8d1
01465414033c3f705a9c7b826e596766046ee1183dbc8aeaa68'
}
web3.eth.accounts.signTransaction({
to: '0xF0109fC8DF283027b6285cc889F5aA624EaC1F55',
value: '1000000000',
gas: 2000000,
gasPrice: '234567897654321',
nonce: 0,
chainId: 1
}, '0x4c0883a69102937d6231471b5dbb6204fe5129617082792ae468d01a3f362318')
.then(console.log);
> {
messageHash:
'0x6893a6ee8df79b0f5d64a180cd1ef35d030f3e296a5361cf04d02ce720d32ec5',
r: '0x9ebb6ca057a0535d6186462bc0b465b561c94a295bdb0621fc19208ab149a9c',
s: '0x440ffd775ce91a833ab410777204d5341a6f9fa91216a6f3ee2c051fea6a0428',
v: '0x25',
rawTransaction:
'0xf86a8086d55698372431831e848094f0109fc8df283027b6285cc889f5aa624eac1f55843b9aca00
8025a009ebb6ca057a0535d6186462bc0b465b561c94a295bdb0621fc19208ab149a9ca0440ffd775ce
91a833ab410777204d5341a6f9fa91216a6f3ee2c051fea6a0428'
}
------------------------------------------------------------------------------
recoverTransaction
=====================
.. code-block:: javascript
web3.eth.accounts.recoverTransaction(rawTransaction);
Recovers the Ethereum address which was used to sign the given RLP encoded
transaction.
----------
Parameters
----------
-------
Returns
-------
-------
Example
-------
.. code-block:: javascript
web3.eth.accounts.recoverTransaction('0xf86180808401ef364594f0109fc8df283027b6285cc
889f5aa624eac1f5580801ca031573280d608f75137e33fc14655f097867d691d5c4c44ebe5ae186070
ac3d5ea0524410802cdc025034daefcdfa08e7d2ee3f0b9d9ae184b2001fe0aff07603d9');
> "0xF0109fC8DF283027b6285cc889F5aA624EaC1F55"
------------------------------------------------------------------------------
hashMessage
=====================
.. code-block:: javascript
web3.eth.accounts.hashMessage(message);
----------
Parameters
----------
-------
Returns
-------
-------
Example
-------
.. code-block:: javascript
web3.eth.accounts.hashMessage("Hello World")
> "0xa1de988600a42c4b4ab089b619297c17d53cffae5d5120d82d8a92d0bb3b78f2"
------------------------------------------------------------------------------
.. _eth-accounts-sign:
sign
=====================
.. code-block:: javascript
web3.eth.accounts.sign(data, privateKey);
Signs arbitrary data. This data is before UTF-8 HEX decoded and enveloped as
follows: ``"\x19Ethereum Signed Message:\n" + message.length + message``.
----------
Parameters
----------
-------
Returns
-------
-------
Example
-------
.. code-block:: javascript
web3.eth.accounts.sign('Some data',
'0x4c0883a69102937d6231471b5dbb6204fe5129617082792ae468d01a3f362318');
> {
message: 'Some data',
messageHash:
'0x1da44b586eb0729ff70a73c326926f6ed5a25f5b056e7f47fbc6e58d86871655',
v: '0x1c',
r: '0xb91467e570a6466aa9e9876cbcd013baba02900b8979d43fe208a4a4f339f5fd',
s: '0x6007e74cd82e037b800186422fc2da167c747ef045e5d18a5f5d4300f8e1a029',
signature:
'0xb91467e570a6466aa9e9876cbcd013baba02900b8979d43fe208a4a4f339f5fd6007e74cd82e037b
800186422fc2da167c747ef045e5d18a5f5d4300f8e1a0291c'
}
------------------------------------------------------------------------------
.. _accounts-recover:
recover
=====================
.. code-block:: javascript
web3.eth.accounts.recover(signatureObject);
web3.eth.accounts.recover(hash, signature);
web3.eth.accounts.recover(hash, v, r, s);
Recovers the Ethereum address which was used to sign the given data.
----------
Parameters
----------
-------
Returns
-------
-------
Example
-------
.. code-block:: javascript
web3.eth.accounts.recover({
messageHash:
'0x1da44b586eb0729ff70a73c326926f6ed5a25f5b056e7f47fbc6e58d86871655',
v: '0x1c',
r: '0xb91467e570a6466aa9e9876cbcd013baba02900b8979d43fe208a4a4f339f5fd',
s: '0x6007e74cd82e037b800186422fc2da167c747ef045e5d18a5f5d4300f8e1a029'
})
> "0x2c7536E3605D9C16a7a3D7b1898e529396a65c23"
// hash signature
web3.eth.accounts.recover('0x1da44b586eb0729ff70a73c326926f6ed5a25f5b056e7f47fbc6e5
8d86871655',
'0xb91467e570a6466aa9e9876cbcd013baba02900b8979d43fe208a4a4f339f5fd6007e74cd82e037b
800186422fc2da167c747ef045e5d18a5f5d4300f8e1a0291c');
> "0x2c7536E3605D9C16a7a3D7b1898e529396a65c23"
// hash, v, r, s
web3.eth.accounts.recover('0x1da44b586eb0729ff70a73c326926f6ed5a25f5b056e7f47fbc6e5
8d86871655', '0x1c',
'0xb91467e570a6466aa9e9876cbcd013baba02900b8979d43fe208a4a4f339f5fd',
'0x6007e74cd82e037b800186422fc2da167c747ef045e5d18a5f5d4300f8e1a029');
> "0x2c7536E3605D9C16a7a3D7b1898e529396a65c23"
------------------------------------------------------------------------------
encrypt
=====================
.. code-block:: javascript
web3.eth.accounts.encrypt(privateKey, password);
----------
Parameters
----------
-------
Returns
-------
-------
Example
-------
.. code-block:: javascript
web3.eth.accounts.encrypt('0x4c0883a69102937d6231471b5dbb6204fe5129617082792ae468d0
1a3f362318', 'test!')
> {
version: 3,
id: '04e9bcbb-96fa-497b-94d1-14df4cd20af6',
address: '2c7536e3605d9c16a7a3d7b1898e529396a65c23',
crypto: {
ciphertext:
'a1c25da3ecde4e6a24f3697251dd15d6208520efc84ad97397e906e6df24d251',
cipherparams: { iv: '2885df2b63f7ef247d753c82fa20038a' },
cipher: 'aes-128-ctr',
kdf: 'scrypt',
kdfparams: {
dklen: 32,
salt:
'4531b3c174cc3ff32a6a7a85d6761b410db674807b2d216d022318ceee50be10',
n: 262144,
r: 8,
p: 1
},
mac: 'b8b010fff37f9ae5559a352a185e86f9b9c1d7f7a9f1bd4e82a5dd35468fc7f6'
}
}
------------------------------------------------------------------------------
decrypt
=====================
.. code-block:: javascript
web3.eth.accounts.decrypt(keystoreJsonV3, password);
Decrypts a keystore v3 JSON, and creates the account.
----------
Parameters
----------
-------
Returns
-------
-------
Example
-------
.. code-block:: javascript
web3.eth.accounts.decrypt({
version: 3,
id: '04e9bcbb-96fa-497b-94d1-14df4cd20af6',
address: '2c7536e3605d9c16a7a3d7b1898e529396a65c23',
crypto: {
ciphertext:
'a1c25da3ecde4e6a24f3697251dd15d6208520efc84ad97397e906e6df24d251',
cipherparams: { iv: '2885df2b63f7ef247d753c82fa20038a' },
cipher: 'aes-128-ctr',
kdf: 'scrypt',
kdfparams: {
dklen: 32,
salt:
'4531b3c174cc3ff32a6a7a85d6761b410db674807b2d216d022318ceee50be10',
n: 262144,
r: 8,
p: 1
},
mac: 'b8b010fff37f9ae5559a352a185e86f9b9c1d7f7a9f1bd4e82a5dd35468fc7f6'
}
}, 'test!');
> {
address: "0x2c7536E3605D9C16a7a3D7b1898e529396a65c23",
privateKey:
"0x4c0883a69102937d6231471b5dbb6204fe5129617082792ae468d01a3f362318",
signTransaction: function(tx){...},
sign: function(data){...},
encrypt: function(password){...}
}
------------------------------------------------------------------------------
.. _eth_accounts_wallet:
wallet
=====================
.. code-block:: javascript
web3.eth.accounts.wallet;
Contains an in memory wallet with multiple accounts. These accounts can be used
when using :ref:`web3.eth.sendTransaction() <eth-sendtransaction>`.
-------
Example
-------
.. code-block:: javascript
web3.eth.accounts.wallet;
> Wallet {
0: {...}, // account by index
"0xF0109fC8DF283027b6285cc889F5aA624EaC1F55": {...}, // same account by
address
"0xf0109fc8df283027b6285cc889f5aa624eac1f55": {...}, // same account by
address lowercase
1: {...},
"0xD0122fC8DF283027b6285cc889F5aA624EaC1d23": {...},
"0xd0122fc8df283027b6285cc889f5aa624eac1d23": {...},
add: function(){},
remove: function(){},
save: function(){},
load: function(){},
clear: function(){},
length: 2,
}
------------------------------------------------------------------------------
wallet.create
=====================
.. code-block:: javascript
web3.eth.accounts.wallet.create(numberOfAccounts [, entropy]);
Generates one or more accounts in the wallet. If wallets already exist they will
not be overridden.
----------
Parameters
----------
-------
Example
-------
.. code-block:: javascript
web3.eth.accounts.wallet.create(2, '54674321§3456764321§345674321§3453647544±±
±§±±±!!!43534534534534');
> Wallet {
0: {...},
"0xF0109fC8DF283027b6285cc889F5aA624EaC1F55": {...},
"0xf0109fc8df283027b6285cc889f5aa624eac1f55": {...},
...
}
------------------------------------------------------------------------------
wallet.add
=====================
.. code-block:: javascript
web3.eth.accounts.wallet.add(account);
----------
Parameters
----------
-------
Returns
-------
-------
Example
-------
.. code-block:: javascript
web3.eth.accounts.wallet.add('0x4c0883a69102937d6231471b5dbb6204fe5129617082792ae46
8d01a3f362318');
> {
index: 0,
address: '0x2c7536E3605D9C16a7a3D7b1898e529396a65c23',
privateKey:
'0x4c0883a69102937d6231471b5dbb6204fe5129617082792ae468d01a3f362318',
signTransaction: function(tx){...},
sign: function(data){...},
encrypt: function(password){...}
}
web3.eth.accounts.wallet.add({
privateKey:
'0x348ce564d427a3311b6536bbcff9390d69395b06ed6c486954e971d960fe8709',
address: '0xb8CE9ab6943e0eCED004cDe8e3bBed6568B2Fa01'
});
> {
index: 0,
address: '0xb8CE9ab6943e0eCED004cDe8e3bBed6568B2Fa01',
privateKey:
'0x348ce564d427a3311b6536bbcff9390d69395b06ed6c486954e971d960fe8709',
signTransaction: function(tx){...},
sign: function(data){...},
encrypt: function(password){...}
}
------------------------------------------------------------------------------
wallet.remove
=====================
.. code-block:: javascript
web3.eth.accounts.wallet.remove(account);
----------
Parameters
----------
-------
Returns
-------
-------
Example
-------
.. code-block:: javascript
web3.eth.accounts.wallet;
> Wallet {
0: {...},
"0xF0109fC8DF283027b6285cc889F5aA624EaC1F55": {...}
1: {...},
"0xb8CE9ab6943e0eCED004cDe8e3bBed6568B2Fa01": {...}
...
}
web3.eth.accounts.wallet.remove('0xF0109fC8DF283027b6285cc889F5aA624EaC1F55');
> true
web3.eth.accounts.wallet.remove(3);
> false
------------------------------------------------------------------------------
wallet.clear
=====================
.. code-block:: javascript
web3.eth.accounts.wallet.clear();
----------
Parameters
----------
none
-------
Returns
-------
-------
Example
-------
.. code-block:: javascript
web3.eth.accounts.wallet.clear();
> Wallet {
add: function(){},
remove: function(){},
save: function(){},
load: function(){},
clear: function(){},
length: 0
}
------------------------------------------------------------------------------
wallet.encrypt
=====================
.. code-block:: javascript
web3.eth.accounts.wallet.encrypt(password);
----------
Parameters
----------
-------
Returns
-------
-------
Example
-------
.. code-block:: javascript
web3.eth.accounts.wallet.encrypt('test');
> [ { version: 3,
id: 'dcf8ab05-a314-4e37-b972-bf9b86f91372',
address: '06f702337909c06c82b09b7a22f0a2f0855d1f68',
crypto:
{ ciphertext:
'0de804dc63940820f6b3334e5a4bfc8214e27fb30bb7e9b7b74b25cd7eb5c604',
cipherparams: [Object],
cipher: 'aes-128-ctr',
kdf: 'scrypt',
kdfparams: [Object],
mac:
'b2aac1485bd6ee1928665642bf8eae9ddfbc039c3a673658933d320bac6952e3' } },
{ version: 3,
id: '9e1c7d24-b919-4428-b10e-0f3ef79f7cf0',
address: 'b5d89661b59a9af0b34f58d19138baa2de48baaf',
crypto:
{ ciphertext:
'd705ebed2a136d9e4db7e5ae70ed1f69d6a57370d5fbe06281eb07615f404410',
cipherparams: [Object],
cipher: 'aes-128-ctr',
kdf: 'scrypt',
kdfparams: [Object],
mac:
'af9eca5eb01b0f70e909f824f0e7cdb90c350a802f04a9f6afe056602b92272b' } }
]
------------------------------------------------------------------------------
wallet.decrypt
=====================
.. code-block:: javascript
web3.eth.accounts.wallet.decrypt(keystoreArray, password);
----------
Parameters
----------
-------
Returns
-------
-------
Example
-------
.. code-block:: javascript
web3.eth.accounts.wallet.decrypt([
{ version: 3,
id: '83191a81-aaca-451f-b63d-0c5f3b849289',
address: '06f702337909c06c82b09b7a22f0a2f0855d1f68',
crypto:
{ ciphertext:
'7d34deae112841fba86e3e6cf08f5398dda323a8e4d29332621534e2c4069e8d',
cipherparams: { iv: '497f4d26997a84d570778eae874b2333' },
cipher: 'aes-128-ctr',
kdf: 'scrypt',
kdfparams:
{ dklen: 32,
salt:
'208dd732a27aa4803bb760228dff18515d5313fd085bbce60594a3919ae2d88d',
n: 262144,
r: 8,
p: 1 },
mac:
'0062a853de302513c57bfe3108ab493733034bf3cb313326f42cf26ea2619cf9' } },
{ version: 3,
id: '7d6b91fa-3611-407b-b16b-396efb28f97e',
address: 'b5d89661b59a9af0b34f58d19138baa2de48baaf',
crypto:
{ ciphertext:
'cb9712d1982ff89f571fa5dbef447f14b7e5f142232bd2a913aac833730eeb43',
cipherparams: { iv: '8cccb91cb84e435437f7282ec2ffd2db' },
cipher: 'aes-128-ctr',
kdf: 'scrypt',
kdfparams:
{ dklen: 32,
salt:
'08ba6736363c5586434cd5b895e6fe41ea7db4785bd9b901dedce77a1514e8b8',
n: 262144,
r: 8,
p: 1 },
mac:
'd2eb068b37e2df55f56fa97a2bf4f55e072bef0dd703bfd917717d9dc54510f0' } }
], 'test');
> Wallet {
0: {...},
1: {...},
"0xF0109fC8DF283027b6285cc889F5aA624EaC1F55": {...},
"0xD0122fC8DF283027b6285cc889F5aA624EaC1d23": {...}
...
}
------------------------------------------------------------------------------
wallet.save
=====================
.. code-block:: javascript
web3.eth.accounts.wallet.save(password [, keyName]);
----------
Parameters
----------
-------
Returns
-------
``Boolean``
-------
Example
-------
.. code-block:: javascript
web3.eth.accounts.wallet.save('test#!$');
> true
------------------------------------------------------------------------------
wallet.load
=====================
.. code-block:: javascript
web3.eth.accounts.wallet.load(password [, keyName]);
----------
Parameters
----------
-------
Returns
-------
-------
Example
-------
.. code-block:: javascript
web3.eth.accounts.wallet.load('test#!$', 'myWalletKey');
> Wallet {
0: {...},
1: {...},
"0xF0109fC8DF283027b6285cc889F5aA624EaC1F55": {...},
"0xD0122fC8DF283027b6285cc889F5aA624EaC1d23": {...}
...
}