У системі Ethereum стан складається з об'єктів, які називаються «рахунками» (кожен рахунок має адресу розміром 20 байт) та переходів станів, які передають значення та інформацію між двома рахунками. Обліковий запис Ethereum складається з чотирьох частин: Випадкове число, яке визначає лічильник, який можна обробити лише один раз за транзакцію Поточний баланс Ethereum рахунку Код контракту рахунку, якщо такий Зберігання акаунта (порожній за замовчуванням) Простіше кажучи, кожен акаунт Ethereum складається з пари публічних і приватних ключів. Публічний ключ можна розуміти як адресу облікового запису, до якої можна отримати будь-який інший обліковий запис Приватний ключ можна розуміти як зашифрований пароль, і ця пара публічних і приватних ключів разом утворює унікально ідентифікований акаунт Ethereum. Наприклад, у першому акаунті Ethereum eth.accounts[0], який ми встановили в попередньому розділі, адреса 0xbcf5b841303bc08026ce2d3b8f83498ffe42c12f є публічним ключем, а зашифрований пароль — приватним ключем. Збільшити рахунки Ми можемо ввести команду personal.newAccount("123") для створення нового акаунта (зверніть увагу, що 123 можна змінити на будь-який інший пароль)
Коли приватний ланцюг Ethereum майнінгується, винайдений ефір буде внесений на перший акаунт Ethereum, тобто eth.accounts[0], і eth.accounts[1] за замовчуванням не матиме ефіру. Наразі ми можемо скористатися наступною командою, щоб перевірити баланс Ethereum у eth.accounts[0].
Як конвертувати Ethereum між двома рахунками Як уже згадувалося, публічний ключ (адреса) кожного рахунку є ядром усіх операцій з обліковим записом Ethereum, але рядок адрес надто довгий, тому ми використовуємо acc0/acc1 для представлення рахунків[0] і [1] відповідно і встановлюємо 0.01 ETH для передачі
Наразі ми можемо використати eth.sendTransaction для перенесення 0.01 ETH з acc0 у acc1.
Механізм захисту Ethereum, який час від часу автоматично блокує акаунти, після чого будь-яка конверсія ETH між рахунками буде відхилена, якщо акаунт не розблоковано. Зараз потрібно виконати personal.unlockAccount(acc0) і ввести пароль, щоб розблокувати acc0.
У цей момент ми повторно виконуємо команду eth.sendTransaction({from: acc0, до: acc1, value: amount}), і результат виглядає так:
Ми бачимо, що на даний момент acc1 має значення 1000000000000000000000000000000 замість попереднього 0. Але чому ця вартість така велика, якщо ми очевидно хочемо дати 0,01 ефірних монет? Насправді, це правильно, нам достатньо ввести команду web3.fromWei(10000000000000000000, "ether"), щоб дізнатися.
Базова одиниця ефіру
Найменша одиниця ефірної монети — це Вей, що також є стандартною одиницею командного рядка, а потім одна одиниця на кожні 1000, у такому порядку
квей (1000 Вей) mwei (1000 KWei) Гвей (1000 мвей) Сабо (1000 гвей) Фінні (1000 szabo) Етер (1000 Фінні) Простіше кажучи, це 1 ETH = 100000000000000000000000 Вей (саме тому ми перевели 0,01 ETH під час попередньої зупинки, але результат був дуже довгим) Як перетворити ефір на вей
|