Как создать свой кошелек эфириум

Возможно ли разработать собственный кошелек Эфириума без метамаски, который должен подключаться к основной сети Эфириума. Как и в blockchain.info, пользователь нажимает на учетную запись, просто указав адрес электронной почты и пароль, учетная запись будет создана в бэкэнде, а адрес кошелька будет отправлен на адрес электронной почты. Чтобы получить доступ к своим учетным записям из метамаски, я пишу этот код.

    const provider = new HDWalletProvider(
  '12 mnemonics',
  'https://rinkeby.infura.io/authid',
);
const web3 = new Web3(provider);
const accounts = await web3.eth.getAccounts();

  console.log('Attempting to deploy contract from ', accounts[1]);

Получил ответ на свой первый вопрос 12 мнемоники, но

как мне вызвать оплачиваемую функцию, которая написана в солидности без метамаски? Я создал здесь новый вопрос Как совершать транзакции без метамаски

Проверьте цену GAS по умолчанию и лимит в web3js.

Ответы (2)

Теперь мой вопрос: как я могу динамически получить новые 12 мнемоник без метамаски?

Вы можете использовать пакет BIP39 npm для создания мнемоники.

var mnemonic = bip39.generateMnemonic();

и используйте эту мнемонику для создания кошелька HD.

Спасибо за ваш комментарий. Итак, я понимаю, что если я смогу получить мнемонику из пакета BIP39, я смогу использовать ее для получения учетных записей с помощью web3, и я смогу подключиться к основной сети ethereum, изменив URL-адрес в hdwalletprovider, указывающий на основную сеть правильно?
да, на самом деле эта мнемоника из 12 слов будет использоваться для создания сида, с помощью которого вы можете создать BIP 32 (HD-кошелек). Но я не использовал метамаску.
Как вы совершаете транзакции с этими сгенерированными мнемониками?

Если вы хотите использовать web3, вы можете использовать его web3.eth.accounts.create([entropy]);для создания учетных записей локально. Параметр энтропии является необязательным.

Он возвращает что-то вроде этого

{
    address: "0xb8CE9ab6943e0eCED004cDe8e3bBed6568B2Fa01",
    privateKey: "0x348ce564d427a3311b6536bbcff9390d69395b06ed6c486954e971d960fe8709",
    signTransaction: function(tx){...},
    sign: function(data){...},
    encrypt: function(password){...}
}

Как только вы это сделаете, вы сможете отправить ETH на этот адрес. Вам не нужно подключать адрес к основной сети (или любой другой сети). Вы можете создавать действительные, реальные учетные записи в автономном режиме. Там нет процесса регистрации/входа/подключения. Сгенерированная учетная запись будет работать во всех сетях Ethereum.

Спасибо за комментарий. Не могли бы вы привести мне более наглядный пример. Что я должен передать внутри энтропии? И после создания учетной записи, как подключить эту учетную запись к основной сети Эфириума? так что я могу отправить деньги и реальный эфир на этот счет.
Я добавил больше информации об entropyосновной сети
Спасибо cleanunicorn за разъяснения. Первый ответ, который я получил. Теперь мой следующий вопрос: как мне вызвать платную функцию в Solidity? Я попытался вызвать вот так const account = await web3.eth.getAccounts(); await camp.methods.contribute().send({ from: account[0], value: web3.utils.toWei('0.001, 'эфир') }); Но я получаю эту ошибку "внутренний газ слишком низкий". Раньше с расширением метамаски он запрашивал подтверждение, если я нажимаю «Отправить» из метамаски, тогда транзакция завершалась успешно. Теперь, когда метамаски нет, я получаю сообщение об ошибке.
Пожалуйста, создайте новые вопросы для этого