Обзор кошелька и учетной записи
Обзор кошелька и учетной записи

Оригинальный текст здесь[1]

Введение

Web3.js Walletэто мысуществовать Хотите использовать закрытые ключи напрямую для любой операции блокчейна.(торговля)основная точка входа,существовать Также известен в других библиотеках какSigner

В отличие от других библиотек, которые могут сохранять только одну учетную запись, Web3.js Walletможно спастинесколько учетных записей,Каждый Счет имеет свой закрытый ключ и адрес. поэтому,Находятся ли эти ключи в памяти компьютера или защищены MetaMask,Walletвсе посланники Эфириум Задачи стали безопасными и простыми。

web3-eth-accountsПакет содержит сгенерированныйEthereumСчет、Функции для подписи транзакций и данных.

В Ethereum закрытый ключ является важной частью пары криптографических ключей, используемой для защиты и контроля владения адресом Ethereum. В системе криптографии с открытым ключом каждый адрес Ethereum имеет соответствующую пару открытого и закрытого ключей. Эта пара ключей позволяет нам иметь адрес Ethereum, управлять средствами и инициировать транзакции.

Более подробную информацию о кошельке можно найти здесь[2].

Подписать и отправить транзакцию мы можем разными способами:

•местныйкошелек[3](Настоятельно рекомендуется)•узелкошелек[4](Устарело

Для каждого из них мы можем использовать Web3PromiEvent[5] для захвата дополнительных событий транзакции.

Кошелек против учетной записи

существоватьweb3.jsсередина,Счетэтообъект,Это относится к отдельному адресу Эфириума со связанными открытым и закрытым ключами. А кошелек — это структура высокого уровня для управления несколькими учетными записями.,Одиночный адрес Эфириума считается Счетом.

Язык кода:javascript
копировать
/* Создать новый счет */
const account = web3.eth.accounts.create();

console.log(account)
/* ↳ 
{
  address: '0x9E82491d1978217d631a3b467BF912933F54788f',
  privateKey: '0x4651f9c219fc6401fe0b3f82129467c717012287ccb61950d2a8ede0687857ba',
  signTransaction: [Function: signTransaction],
  sign: [Function: sign],
  encrypt: [Function: encrypt]
}
*/

существовать web3.js середина,кошелекэто Содержит несколько Эфириум Счетмассив。Он обеспечивает удобный способ управления рядом Счети взаимодействовать с ним。Его можно рассматривать как использование дляхранилищеи различные организации Эфириум Номера адресовкошелек。

Язык кода:javascript
копировать
/* Создать новый кошелек */
//create a wallet with `1` random account
const wallet = web3.eth.accounts.wallet.create(1);

console.log(wallet)
/* ↳ 
Wallet(1) [
  {
    address: '0xB2D5647C03F36cA54f7d783b6Fa5afED297330d4',
    privateKey: '0x7b907534ec13b19c67c2a738fdaa69014298c71f2221d7e5dec280232e996610',
    signTransaction: [Function: signTransaction],
    sign: [Function: sign],
    encrypt: [Function: encrypt]
  },
  _accountProvider: {
    create: [Function: createWithContext],
    privateKeyToAccount: [Function: privateKeyToAccountWithContext],
    decrypt: [Function: decryptWithContext]
  },
  _addressMap: Map(1) { '0xb2d5647c03f36ca54f7d783b6fa5afed297330d4' => 0 },
  _defaultKeyName: 'web3js_wallet'
]
*/

Принципиальная схема

Хотите узнать большеaccountsметод,Может получить доступ к API учетных записей web3.js[6].

Хотите узнать большеwalletметод,Имеет доступ к API кошелька web3.js[7].

Отправить транзакцию

Самый простой способ сделать это — напрямую добавить закрытый ключ (закрытый ключ должен начинаться с «0x»).,и должен иметь средства для выполненияторговля)создатьWallet

Язык кода:javascript
копировать
/* Используйте метод добавления закрытого ключа в Отправить транзакцию */
import { Web3 } from 'web3';

const web3 = new Web3('https://ethereum-sepolia.publicnode.com');

//this will create an array `Wallet` with 1 account with this privateKey
//it will generate automatically a public key for it
//make sure you have funds in this accounts
const wallet = web3.eth.accounts.wallet.add('0x152c39c430806985e4dc16fa1d7d87f90a7a1d0a6b3f17efe5158086815652e5');

const _to = '0xc7203efeb54846c149f2c79b715a8927f7334e74';
const _value = '1'; //1 wei

//the `from` address in the transaction must match the address stored in our `Wallet` array
//that's why we explicitly access it using `wallet[0].address` to ensure accuracy
const receipt = await web3.eth.sendTransaction({
  from: wallet[0].address,
  to: _to,
  value: _value,
});
//if you have more than 1 account, you can change the address by accessing to another account
//e.g, `from: wallet[1].address`

console.log('Tx receipt:', receipt);
/* ↳
Tx receipt: {
  blockHash: '0xa43b43b6e13ba47f2283b4afc15271ba07d1bba0430bd0c430f770ba7c98d054',
  blockNumber: 4960689n,
  cumulativeGasUsed: 7055436n,
  effectiveGasPrice: 51964659212n,
  from: '0xa3286628134bad128faeef82f44e99aa64085c94',
  gasUsed: 21000n,
  logs: [],
  logsBloom: '0x00000...00000000',
  status: 1n,
  to: '0xc7203efeb54846c149f2c79b715a8927f7334e74',
  transactionHash: '0xb88f3f300f1a168beb3a687abc2d14c389ac9709f18b768c90792c7faef0de7c',
  transactionIndex: 41n,
  type: 2n
}
*/

Взаимодействие с контрактами

функция записи

Для взаимодействия с функциями (функциями записи), которые изменяют или обновляют данные в смарт-контракте.,нам нужно создатьWallet。этоткошелек Должен иметь хотя бы один аккаунт,И на счете должны быть средства, необходимые для выполнения этих операций с блокчейном.

Язык кода:javascript
копировать
/* Функция вызова смарт-контрактов записи */
import { Web3 } from 'web3';

const web3 = new Web3('https://ethereum-sepolia.publicnode.com');

//create a wallet
const wallet = web3.eth.accounts.wallet.add('0x152c39c430806985e4dc16fa1d7d87f90a7a1d0a6b3f17efe5158086815652e5');

//this is how we can access to the first account of the wallet
console.log('Account 1:', wallet[0]);
/* ↳
Account 1: {
  address: '0x57CaabD59a5436F0F1b2B191b1d070e58E6449AE',
  privateKey: '0x152c39c430806985e4dc16fa1d7d87f90a7a1d0a6b3f17efe5158086815652e5',
  ...
}
*/

//instantiate the contract
const myContract = new web3.eth.Contract(ABI, CONTRACT_ADDRESS);

//interact with the contract
//wallet[0].address == '0x57CaabD59a5436F0F1b2B191b1d070e58E6449AE'
const txReceipt = await myContract.methods.doSomething().send({ from: wallet[0].address });

console.log('Transaction receipt:', txReceipt);
/* ↳
  Transaction receipt: {...}
*/

Функция чтения (просмотр)

Для просмотра смарт-контрактовpublic/external returnsвзаимодействовать,Нам не нужно создавать экземпляр кошелька,Мы можем сделать это, просто создав экземпляры смарт-контрактов и поставщиков.

Язык кода:javascript
копировать
/* Вызов функции чтения смарт-контракта */
import { Web3 } from 'web3';

//instantiate the provider
const web3 = new Web3('https://ethereum-sepolia.publicnode.com');

//instantiate the contract
const myContract = new web3.eth.Contract(ABI, CONTRACT_ADDRESS);

//call the `view function` in the contract
const result = await myContract.methods.doSomething().call();

console.log('Result:', result)
/* ↳
  Result: ...
*/

метод кошелька

Перечислено нижеweb3.th.accounts.walletСумкасерединапредоставилWalletметод[8]:

•add[9]:Используйте закрытый ключ или Счетобъектдобавить Счетприезжатькошелексередина。•clear[10]:Безопасное опорожнениекошелеки удалить егосерединаиз всех Счет。Используйте с осторожностью, так как это приведет к удалению всех счетов в вашем локальном кошельке.。•create[11]:существоватькошелексерединасоздать илинесколько учетных запись. Если кошелек уже содержит существующие, они не будут перезаписаны. •decrypt[12]: расшифровать хранилище ключей. объект v3. •encrypt[13]: зашифровать все учетные записи в кошельке в зашифрованном хранилище ключей. v3объектсередина。•get[14]:Уточнить Счетсуществоватькошелексерединаиндекс или адрес его открытого ключа。•load[15]:отместныйхранилищесерединаимпортироватькошелеки расшифровать его。Уведомление:Поддерживается только браузером。•remove[16]:откошелексередина Удалить назначение Счет。•save[17]:в виде строкишифрованиепозжекошелекхранилищеприезжатьместныйхранилищесередина。Уведомление:Поддерживается только браузером。•getStorage[18]:Получите браузерхранилищеобъект。

Метод учетной записи

Перечислено нижеweb3.th.accountsСумкасерединапредоставилAccountsметод[19]:

•create[20]: создать и вернуть объект Web3Account, включая закрытый и открытый ключ. существовать при создании закрытого ключа,Он использует проверенный пакетethereum-cryptography/secp256k1,Этот пакет имеет специфические характеристикишифрованиебезопасное случайное число。узнать больше:https://www.npmjs.com/package/ethereum-cryptography#secp256k1-curve•decrypt[21]:Расшифровать v3 keystore JSON и создайте учетную запись. •encrypt[22]: зашифровать закрытый ключ с помощью пароля и вернуть ключ V3. JSON Подробности см. в хранилище ключей https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition. •hashMessage[23]: хешировать данное сообщение. Данные будут в формате UTF-8. HEX декодируется и инкапсулируется следующим образом: «\x19Ethereum Signed Message:\n” + длина сообщения + Сообщение хешируется с помощью keccak256. •parseAndValidatePrivateKey[24]: получите проверенный закрытый ключ. Uint8Array. ПРИМЕЧАНИЕ. Эта функция не экспортируется через основной пакет web3, поэтому, чтобы использовать ее напрямую, импортируйте из пакета учетных записей. •privateKeyToAccount[25]: Получите учетную запись по закрытому ключу. •privateKeyToAddress[26]: Получите адрес Ethereum из закрытого ключа. •privateKeyToPublicKey[27]: Получите открытый ключ из закрытого ключа. •recover[28]: восстановить адрес Ethereum, используемый для подписи данных. •recoverTransaction[29]: восстановить адрес Ethereum, используемый для подписи данной транзакции, закодированной RLP. •sign[30]: подпишите данные произвольные данные с помощью закрытого ключа. •signTransaction[31]: подпишите данную транзакцию Ethereum, используя закрытый ключ.

Отказ от ответственности: эта работа распространяется под лицензией Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0)[32]. Пожалуйста, укажите источник при ее использовании. Автор: мэнбин[33] блог: мэнбин[34] Гитхаб: mengbin92[35] cnblogs: Непреднамеренная влюбленность в воду[36] Сообщество разработчиков Tencent Cloud: Мюнстер[37]

References

[1] здесь: https://docs.web3js.org/guides/wallet/ [2] здесь: https://ethereum.org/en/wallets/ [3] Локальный кошелек: https://docs.web3js.org/guides/wallet/local_wallet [4] Узел кошелька: https://docs.web3js.org/guides/wallet/node_wallet [5] Web3PromiEvent: https://docs.web3js.org/guides/wallet/promi_event [6] web3.js accounts API: https://docs.web3js.org/libdocs/Accounts [7] web3.js wallet API: https://docs.web3js.org/libdocs/Wallet [8] метод: https://docs.web3js.org/libdocs/Wallet [9] add: https://docs.web3js.org/libdocs/Wallet#add [10] clear: https://docs.web3js.org/libdocs/Wallet#clear [11] create: https://docs.web3js.org/libdocs/Wallet#create [12] decrypt: https://docs.web3js.org/libdocs/Wallet#decrypt [13] encrypt: https://docs.web3js.org/libdocs/Wallet#encrypt [14] get: https://docs.web3js.org/libdocs/Wallet#get [15] load: https://docs.web3js.org/libdocs/Wallet#load [16] remove: https://docs.web3js.org/libdocs/Wallet#remove [17] save: https://docs.web3js.org/libdocs/Wallet#save [18] getStorage: https://docs.web3js.org/libdocs/Wallet#getStorage [19] метод: https://docs.web3js.org/libdocs/Wallet [20] create: https://docs.web3js.org/libdocs/Accounts#create [21] decrypt: https://docs.web3js.org/libdocs/Accounts#decrypt [22] encrypt: https://docs.web3js.org/libdocs/Accounts#encrypt [23] hashMessage: https://docs.web3js.org/libdocs/Accounts#hashMessage [24] parseAndValidatePrivateKey: https://docs.web3js.org/libdocs/Accounts#parseAndValidatePrivateKey [25] privateKeyToAccount: https://docs.web3js.org/libdocs/Accounts#privateKeyToAccount [26] privateKeyToAddress: https://docs.web3js.org/libdocs/Accounts#privateKeyToAddress [27] privateKeyToPublicKey: https://docs.web3js.org/libdocs/Accounts#privateKeyToPublicKey [28] recover: https://docs.web3js.org/libdocs/Accounts#recover [29] recoverTransaction: https://docs.web3js.org/libdocs/Accounts#recoverTransaction [30] sign: https://docs.web3js.org/libdocs/Accounts#sign [31] signTransaction: https://docs.web3js.org/libdocs/Accounts#signTransaction [32] С указанием авторства-Некоммерческая-ShareAlike 4.0 интернациональность (CC BY-NC-SA 4.0): https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh [33] mengbin: mengbin1992@outlook.com [34] mengbin: https://mengbin.top [35] mengbin92: https://mengbin92.github.io/ [36] Влюбляюсь в воду нечаянно: https://www.cnblogs.com/lianshuiwuyi/ [37] Мюнстер: https://cloud.tencent.com/developer/user/6649301

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose