Ethereum на практиці

Ethereum на практиці частина 2: Як створити покращену демократію в 100 рядках коду

Ми зробили жетони (token). Але який у цьому сенс якщо вони нічого нового не роблять? Зараз ми створимо новий контракт, який буде використовувати вже створені нами жетони. У нашому контракті ми опишемо демократичну організацію на блокчейне. Кожен у кого є жетони зможе голосувати за запропоновані рішення.

Так що давайте повернемося у вкладку CONTRACTS -> Deploy contract і вставимо вихідний код DAO (Демократичної Автономної Організації) в поле Solidity Source. Вибираємо зі списку контракт Democracy і встановлюємо такі параметри:

Amount = 0. Тут ви можете вказати з якою кількістю ефіру буде стартувати ваша DAO. Але ефір можна додавати пізніше, тому залишаємо нуль. (Примітка перекладача: в останній версії контракту, це поле прибрали, що цілком логічно).

В поле minimumSharesForVoting вказуємо мінімальний кворум, який необхідний, щоб питання було прийнято. Одиниці виміру - «центи». Тобто якщо ви при створенні валюти вводили, все те що я радив, тоді з урахуванням двох знаків після коми число 500 буде означати 5.00 токенов. Всього токенов у нас 100. Значить для прийняття рішення вистачить 5% голосів.

Ваш контракт повинен виглядати приблизно, як на зображенні:

Ethereum на практиці


Ethereum на практиці

Натисніть на цей новий контракт, щоб відкрити його сторінку. Якщо на цьому контракті немає ефіру, потрібно трохи додати, щоб подивитися, як працює ця незвичайна демократія. Якщо контракт вже має якісь фонди, то натисніть кнопку «show contract info».

З правого боку екрану вказано конкретно функції, які виробляють обчислення і вносять зміни в блокчейн. Тому вони платні, тобто вимагають Ефір. Виберіть зі списку newProposal, щоб створити нову пропозицію.

Ethereum на практиці

Голосувати за пропозицію дуже легко. Вибираємо функцію «vote» зі списку. Введіть номер пропозиції за яке ви хочете проголосувати. І поставте прапорець Yes, якщо ви хочете підтримати пропозицію. Або залиште порожнім якщо ви хочете висловитися проти. Натисніть кнопку EXECUTE, щоб відправити свій голос.

Ethereum на практиці

Коли мінімальна кількість голосів набрано, можна виконати контракт (executeProposal). Якщо в реченні ми просто збиралися відправити ефір, то поле transactionBytecode знову залишаємо порожнім. Після того як ви натиснули кнопку EXECUTE, не поспішайте вводити пароль. Зверніть увагу на поле «estimated fee consumption». Якщо там червоними буквами виводиться попередження, це означає, що функція не буде виконаний, але плата за спробу виконання все одно буде взята. Таке може відбуватися з різних причин. Але в контексті нашого контракту, швидше за все мова йде про спробу виконати пропозицію до того, як термін збору підписів закінчився. З міркувань безпеки будь-яка спроба виконати некоректний контракт припиняється, але комісія за спробу виконання все одно стягується.

Ethereum на практиці

Якщо все пройшло добре, то ви зможете побачити результати голосування через кілька секунд. Параметр «відкритий для голосування» (openToVote) вимкнеться, а підсумок голосування з'явиться в поле proposalPassed. Кількості ефіру в фонді даного контракту зменшиться, тому що частина його буде відправлено одержувачу, який був зазначений на самому початку.

Тепер ми можемо сказати, що створили демократичну автономну організацію, яка управляється за допомогою блокчейна і використовує виключно цифрові акції-жетони. Така організація може мати дуже великий вплив в реальному світі. А тепер зверніть увагу на дивну і важливу річ - ця організація не перебуває під вашим контролем, хоча ви її і створили. Контракт без вашої участі, тепер буде виконуватися за правилами, які ви в нього заклали. Навічно. Ви не можете підкупити його, не можете спотворити. Правила постійні незалежно від того, про яку суму йдеться 0.01 або 1000000 ефірів.

Невже може бути щось краще цього? На справді, може. Наступного разу ми розглянемо, як ви можете використовувати transactionBytecode щоб не просто пересилати ефір, а робити більш складні речі. І ми змінимо код жетонів, для того щоб наша демократична організація змогла контролювати їх обіг.