Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 13646|Відповідь: 2

Посібник з розробки блокчейн-додатків

[Копіювати посилання]
Опубліковано 03.05.2018 15:55:28 | | |
Твердження: Нижче наведено документ «Xunlei Global Blockchain Application Development Guide», написаний компанією Xunlei. Чому варто використовувати цей документ, написаний компанією Xunlei, як посібник з розробки блокчейну?

Thunder — це приватний ланцюг, побудований на смарт-контрактах Ethereum, технологія дуже зріла і має глибокі дослідження блокчейн-технології, що має ключове значення для нашого розвитку блокчейну.

Як кажуть, «робіть висновки з одного прикладу», ми можемо розробляти інші блокчейн-додатки, читаючи посібник з розробки блокчейну, написаний Xunlei завдяки Xunlei.

У документі йдеться:

1/16
Посібник з розробки конкуренції блокчейн-додатків Thunder Global
Розробка контракту в рекомендацію лінії
1. Перед написанням смарт-контрактів потрібно мати певне розуміння основ блокчейну (додається: Ethereum Overview).
2. Вивчіть мову солідності (API).
3. Навчіться використовувати структуру трюфеля у поєднанні з навчанням на міцність. Використовуйте трюфелі, вирощуйте локально
Запускайте контракти в блокчейн-середовищі.
4. Вивчати та використовувати zeppelin-solidty (стандартизований контрактний фреймворк, присвячений безпеці) та інтеграцію дизайну
Режим контракту, розділення даних і логічних контрактів, контроль безпеки дозволів і логіка оновлення.
5. Навчіться взаємодіяти з контрактами за допомогою web3.js. Використовуйте плагін Metamask і веб-сервіс разом із блокчейном
Взаємодія.
6. Питання та відповіді на форумі: http://wanke.xunlei.com/forum.php?
mod=forumdisplay&fid=53 (Будь-які проблеми, з якими ви стикаєтеся, можна виправити на цьому форумі.)
Ми відповімо вам протягом 3 робочих днів)
Основні поняття
Блокчейн
Блокчейн — це децентралізована розподілена обчислювальна система, головною особливістю якої є постійна незмінність даних,
Його не можна підробити, і він має високий рівень відкритості, прозорості та довіри. Основні технології включають Візантійський алгоритм консенсусу стійкості до відмов (PBFT),
технологія шифрування, P2P-технологія тощо.
Транзакція
Блокчейн можна розуміти як глобально спільну систему баз даних транзакцій. Будь-яке програмне забезпечення з дозволом може його прочитати
Візьміть дані з блокчейн-мережі. Коли необхідно змінити дані в блочній мережі, потрібно ініціювати blanket
Існують запити, які приймаються блочними вузлами, які разом називають транзакціями в системі.
Транзакції є транзакційними і подаються в блокчейн, або не всі, або всі виконані. Торговий керівник
Після завершення рядка він назавжди зберігається в блокчейні і не може бути змінений або виконаний знову.
Транзакції ініціюється та підписується обліковим записом у системі, а за допомогою криптографії транзакції можуть зберігатися лише приватним ключем
2/16
Хтось ініціює його, інші не можуть модифікувати і ковувати. Це гарантує автентичність і безпеку транзакції.
Опис
У блокчейн-системі є два типи рахунків: один зовнішній і контрактний рахунок. Зовнішній акаунт, що належить
Ваші унікальні публічні та приватні ключі, і ваш акаунт контролюється цією парою ключів. Ф'ючерсні рахунки мають власний код, і рахунок створюється
Власний контроль коду.
Обліковий запис ідентифікується за адресою, довжина адреси однакова, і між цими двома типами акаунтів немає різниці. Адреса зовнішнього рахунку надається
Створюється публічний ключ, а адреса контракту використовує адресу, з якої було створено контрактний рахунок, а також кількість транзакцій, що створили контрактний рахунок
(nonce) виробляється. Контракти розгортаються за офіційною адресою, а звичайні рахунки не можуть безпосередньо публікувати контракти. Комбінація користувача
Вона має бути офіційно розглянута і випущена Xunlei.
У межах системи немає різниці між цими двома типами рахунків. Кожен акаунт має 256 бітів у системі
Структура зберігання ключів до 256 біт називається сховищем. Кожен рахунок має баланс, який називається
Баланс у Вей можна змінити, відправивши транзакцію з числовим значенням на рахунок.
Контракт
Контракт — це блокчейн-акаунт, який зберігає код, а дзвінок за контрактом здійснюється шляхом відправлення транзакцій на цей рахунок. Коли
Попередньою більш популярною мовою контрактного програмування була Solidity. Наразі конкурс підтримує лише подання контрактів у форматі Solidity.
Контракт поділяється на дві частини: зберігання даних і функція, дані зберігають стан контракту, а функція — це контракт
Зовнішній інтерфейс реалізує запити до даних і зміну стану шляхом виклику функцій.
Напишіть контракт через мову програмування і отримайте байткод EVM після компіляції. Відправивши транзакцію на контрактний рахунок, реальний
Поточний контрактний дзвінок.
Газ
Газ — це платіжна одиниця блокчейну, і коли транзакція створюється, вказується певна кількість газу. Господи
Якщо це обмеження обсягу обчислення транзакції та сплати комісію за її виконання, Під час виконання угоди Газ
Вона буде споживатися правилами, встановленими EVM.
Ціна газу — це значення, визначене творцем транзакції та кількістю комісій, необхідних для виконання транзакції
Кількість — Gas_Price*Газ. Транзакція завершена. Якщо залишився газ, решта повертається до пропозиції творця
Користувачі. Якщо газу недостатньо, виконання транзакції зазнає невдачі, і транзакція не зможе запобігти атакам flood для безпеки системи
Плата за обробку не повертається. Найменша одиниця ціни газу — вей, 10^18 вей = 1 грам ланцюга.
Твердість
3/16
Solidity — це мова програмування високого рівня, розроблена для смарт-контрактів, що працює на EVM (Ethereum).
Virtual Machine)。 Реалізація дизайну мови під впливом C++/Python/JavaScript.
Solidity — це чітко типізована мова, яка підтримує спадковість, поліморфізм, інтерфейси, абстракцію, бібліотеки, власні типи даних та інше
Стать. Solidity підтримує програмування асемблерних інструкцій, а код компілюється у байткод і виконується на EVM. Твердість — це
Найпопулярнішою мовою розробки смарт-контрактів є також мова, рекомендована та підтримувана платформою Thunder Contract.
Примітки:
1. Ethereum Virtual Machine — це віртуальне середовище на Ethereum, яке забезпечує середовище виконання для смарт-контрактів
Імітована машина. Конкурентна платформа сумісна з EVM, але повинна відповідати обмеженням використання офіційної платформи.
2. Типи рахунків поділяються на зовнішні рахунки (адреси звичайних торгових рахунків) та ф'ючерсні рахунки. Створіть контракт
Це процес надсилання транзакції на адресу рахунку призначення 0.
3. Конкурс визначає використання трюфеля (трюфель v4.1.5 solidity v0.4.21) для розробки інтелектуальних комбінацій
Платформа перевірятиме байткод відповідно до вихідного коду документа, поданого учасником. ,
Розробляйте контракти з трюфелем
Трюфель для розробки структури надійності смарт-контрактів. Він забезпечує повний набір розробки, налагодження та редагування
Переклад, розгортання та тестування локальних середовищ. Ви можете швидко використати команду шаблону unbox, базуючись на деяких шаблонах
Згенеруйте відповідну структуру контракту.
Встановити трюфель
npm i -g трюфель
[root@opennode сандай]# трюфелева версія
Truffle v4.1.5 (ядро: 4.1.5)
Solidity v0.4.21 (solc-js)
Початок
1. Ініціалізувати контрактний проєкт за допомогою трюфеля
4/16
MKDIR simple-storage
CD-просте зберігання
Truffle Init
2. Створіть новий файл контракту: Ви можете використовувати трюфель для створення контракту
Ви також можете створити новий файл безпосередньо з командного рядка SimpleStorage
contract/SimpleStorage.sol
SimpleStorage.sol
прагма-солідність ^0.4.21;
contract SimpleStorage {
uint myVariable;
function set(uint x) public {
myVariable = x;
}
функція get() постійна публічна поверненість
(уїнт) {
повернути myVariable;
}
}
3. Додайте скрипти міграції: можна використовувати truffle create migration
2_deploy_contract додається метод командного рядка, і ви також можете безпосередньо створити новий файл
Міграції/2_deploy_contract.js
2_deploy_contract.js; виконання трюфельного мігрування
Порядок рядків пов'язаний із іменем файлу, тому потрібно називати кілька скриптів розгортання у порядку
var SimpleStorage =
artifacts.require("SimpleStorage");
module.exports = function(deployer) {
deployer.deploy (SimpleStorage);
5/16
};
4. Запустіть контракт компіляції truffle, і скомпільований контракт знаходиться у папці збірки. За контрактом
Існує відповідний json-файл, що містить байткод, abiCode тощо, необхідний для розгортання
5. Відредагуйте truffle.js, щоб налаштувати контракт на розгортання truffle та RPC-з'єднання для взаємодії з блокчейном.
[root@localhost opennode]# vi truffle.js
module.exports = {
networks: {
development: {
host: "127.0.0.1",
port: 8545,
network_id: «*»
}
}
};
6. Увімкніть стандартне блокчейн-середовище Truffle на консолі.
Трюфелі розвиваються
Truffle Develop почався в
http://127.0.0.1:9545/
Accounts:
(0) 0x627306090abab3a6e1400e9345bc60c78a8bef57
(1) 0xf17f52151ebef6c7334fad080c5704d77216b732
(2) 0xc5fdf4076b8f3a5357c5e395ab970b5b54098fef
(3) 0x821aea9a577a9b44299b9c15c88cf3087f3b5544
(4) 0x0d1d4e623d10f9fba5db95830f7d3839406c6af2
(5) 0x2932b7a2355d6fecc4b5c0b6bd44cc31df247a2e
(6) 0x2191ef87e392377ec08e7c08eb105ef5448eced5
(7) 0x0f4f2ac550a1b4e2280d04c21cea7ebd822934b5
(8) 0x6330a553fc93768f612722bb8c2ec78ac90b3bbc
(9) 0x5aeda56215b167893e80b4fe645ba6d5bab767de
6/16
Приватні ключі:
(0)
c87509a1c067bbde78beb793e6fa76530b6382a4c0241e5e
4a9ec0a0f44dc0d3
(1)
ae6ae8e5ccbfb04590405997ee2d52d2b330726137b87505
3c36d94e974d162f
(2)
0dbbe8e4ae425a6d2687f1a7e3ba17bc98c673636790f1b8
AD91193C05875ef1
(3)
c88b703fb08cbea894b6aeff5a544fb92e78a18e19814cd8
5da83b71f772aa6c
(4)
388c684f0ba1ef5017716adb5d21a053ea8e90277d086833
7519f97bede61418
(5)
659cbb0e2411a44db63778987b1e22153c086a95eb6b18bd
f89de078917abc63
(6)
82d052c865f5763aad42add438569276c00d3d88a2d062d3
6b2bae914d58b8c8
(7)
aa3680d5d48a8283413f7a108367c7299ca73f553735860a
87b08f39395618b7
(8)
0f62d96d6675f32685bbdb8ac13cda7c23436f63efbb9d07
700d8669ff12b7c4
(9)
8d5366123cb560bb60379f90a0bfd4769eecc0557f1b362
dcae9012b548b1e5
Mnemonic: candy maple cake sugar pudding cream
Медовий м'який крамбл солодкий ласощі
⚠ Важливо ⚠: Ця мнемоніка створена для
ти — Трюфель. Вона не є безпечною.
Переконайтеся, що ви не використовуєте його на виробництві
7/16
Блокчейни, інакше ви ризикуєте втратити кошти.
Трюфель (розробка)>
Це забезпечує нативне блокчейн-середовище для Truffle для виконання контрактів, генеруючи 10 акаунтів за замовчуванням, кожен з яких генерується
Початковий баланс рахунку становить 100 ефірів. Ви також можете скористатися графічним інтерфейсом, який надає Ganache
, потрібно змінити порт, до якого підключена конфігурація.
7. Виконати контракт на розгортання порту truffle migrate у новій консолі (або в truffle
розробка консолі для виконання міграції).
8. Протестуйте код контракту за допомогою truffle develop.
SimpleStorage.deployed().then(function(instance
){return
instance.get.call(); }).then(function(value)
{повернення значення.toNumber()})
// 0
SimpleStorage.deployed().then(function(instance
){return instance.set(100); });
Вихідна інформація про транзакції
SimpleStorage.deployed().then(function(instance
){return
instance.get.call(); }).then(function(value)
{повернути значення.toNumber()});
// 100
9. Перевірте контракт за допомогою тесту трюфеля Використовуйте truffle create test SimpleStorage для створення нового або
Створіть новий тест файлу/SimpleStorage.test.js безпосередньо.
const SimpleStorage =
artifacts.require ('SimpleStorage');
contract('SimpleStorage', function(accounts) {
8/16
it("має стверджувати істину", функція (зроблено)
{
var simpleStorage =
SimpleStorage.deployed();
Інстанція VAR;
simpleStorage.then(res => {
екземпляр = res;
Return instance.get()
}).then(значення => {
assert.equal('0',
value.toNumber(), 'не дорівнює 0')
}).then(() => {
instance.set(100)
}).then(() => {
Return instance.get()
}).then(значення => {
assert.equal('100',
value.toNumber(), 'не дорівнює 100')
})
зроблено();
});
});
У новій консолі введіть truffle test ./test/SimpleStorage.test.js.
10. Тестові контракти з реміксом Пут-контракти, розроблені з використанням трюфеля в реміксі для швидкої модифікації
Розгортання та застосування запропонованого контракту. Remix забезпечує середовище виконання компіляції для контрактів і може контролюватися контрактом
У таблиці можна побачити детальну інформацію про кожну транзакцію контракту, таку як параметри введення та виходу, підписані дані методу,
транзакційний хеш та іншу інформацію. Підтримка налагодження.
1. Використовуйте компіляційні деталі, щоб побачити деталі складання контракту. Включаючи байткод, abi
а також використання web3.js швидкого розгортання методу Drip Ah.
9/16
2. Використайте run, щоб створити контракт, і консоль зможе переглянути транзакцію, яка створила контракт.
Використовуйте Truffle Unbox для створення інтерактивних контрактних додатків
Вищезазначені кроки створюють контрактне середовище, яке можна компілювати, розгортати та налагоджувати за допомогою базового truffle init. Нижче
Створіть новий проєкт за допомогою Truffle Unbox, який надає нам шаблон трюфельного проєкту всередині
Деякі залежності середовища взаємодії з контрактними додатками. Ви можете переглянути офіційні пропозиції в Truffle Boxes
Шаблонні бокси. Нижче наведено шаблон react.
1. Новий проєкт truf-react
MKDIR Truf-react
10/16
CD Truf-React
Truffle unbox react
Процес unbox завантажує шаблон вилучення та виконує операції, такі як встановлення npm.
2. Налаштувати truffle.js проєкту
module.exports = {
Див.
<http://truffleframework.com/docs/advanced/confi
Гурація>
щоб налаштувати свій трюфель
Конфігурація!
networks: {
development: {
host: '127.0.0.1',
port: '9545',
network_id: '*' // Матч
Будь-який ідентифікатор мережі
}
}
};
3. Почніть розвивати трюфель
4. Внесення змін до SRC/App.js
імпортувати React, { Компонент } з 'react'
імпортувати SimpleStorageContract з
'.. /build/contracts/SimpleStorage.json'
import getWeb3 з './utils/getWeb3'
імпортувати './css/oswald.css'
імпортувати './css/open-sans.css'
імпортувати './css/pure-min.css'
11/16
імпорт './App.css'
const contract = require('трюфельний контракт')
const simpleStorage =
контракт(SimpleStorageContract)
class App extends Component {
constructor(props) {
Super(реквізит)
this.state = {
storageValue: 0,
web3: null,
inputValue: 0,
address: null
}
this.changeValueHandle =
this.changeValueHandle.bind(this)
this.setHandle =
this.setHandle.bind(this)
}
componentWillMount() {
Отримайте мережевого провайдера та web3
Випадок.
Дивіться utils/getWeb3 для детальнішої інформації
інформація.
getWeb3
.then(результати => {
this.setState({
web3:
results.web3
})
Інстанційний контракт
Після того, як web3 надав її.
12/16
this.instantiateContract()
})
.catch(() => {
console.log('Помилка)
Пошук web3.')
})
}
instantiateContract() {
/*
* ПРИКЛАД СМАРТ-КОНТРАКТУ
*
* Зазвичай ці функції були б
називатися в контексті
* Бібліотека державного управління, але
для зручності я поставив їх тут.
*/
this.simpleStorageSet(5)
}
changeValueHandle(event) {
this.setState({
inputValue:
Число(event.target.value)
})
}
setHandle() {
this.simpleStorageSet(this.state.inputValue)
}
simpleStorageSet(x) {
simpleStorage.setProvider(this.state.web3.curren
tProvider)
Заявляю це на потім, отже
13/16
ми можемо ланцюжувати функції на SimpleStorage.
var simpleStorageInstance
Отримуйте акаунти.
this.state.web3.eth.getAccounts((error,
accounts) => {
simpleStorage.deployed().then((instance) => {
simpleStorageInstance = екземпляр
this.setState({
address: instance.address })
Магазини a
За заданим значенням — 5 за замовчуванням.
Повернення
simpleStorageInstance.set(x, {from:
рахунки[0]})
}).then((результат) => {
Отримай цінність
з контракту, щоб довести, що це спрацювало.
Повернення
simpleStorageInstance.get.call(accounts[0])
}).then((результат) => {
Оновлення стану
з результатом.
Повернення
this.setState({ storageValue: result.c[0] })
})
})
}
render() {
Повернення (
<div className="App">
<nav
className="navbar pure-menu pure-menuhorizontal">
14/16
<a href="#" className="pure-menu-heading puremenu-link">Truffle
Коробка</a>
</nav>
<main
className="container">
<div
className="pure-g">
<div className="pure-u-1-1">
<h1>Готово!</h1>
<p>Ваша коробка для трюфелів встановлена і готова.</p>
<h2>Приклад смарт-контракту</h2>
<p>Якщо ваші контракти були складені та мігровані
успішно, нижче буде показано збережене значення
5 (за замовчуванням).</p>
<p>Спробуйте змінити значення, збережене <strong>в мережі
59</strong> з App.js.</p>
<p>Збережене значення виглядає:
{this.state.storageValue}</p>
<p>Адреса розгорнутого контракту:
{this.state.address}</p>
</div>
<div>
<input type="number" onChange=
{this.changeValueHandle}/>
<button onClick={this.setHandle}>set</button>
15/16
</div>
</div>
</main>
</div>
);
}
}
експорт Додаток за замовчуванням
Додано метод виклику набору контрактів. І покажіть адресу контракту.
5. Відкрий нову консоль і запусти npm run start
6. Відкрийте http://lcoalhost:3000 у вашому браузері, щоб побачити результати контракту.
7. Встановіть значення збережених даних за контрактом через набор і вхідні поля.
8. Вхід у тріфле розвиток
//将xxx替换为address
SimpleStorage.at('xxxx').then(res => {return
res.get()})
Отримується повернене значення типу BigNUmber, і значення в масиві c встановлюється
збережені дані.
Використовуйте плагін браузера Metamask для взаємодії з блокчейном
Посилання http://truffleframework.com/tutorials/pet-shop
Учасники подають документи
Конкурс визначає використання Truffle для розробки смарт-контрактів, при цьому версія Truffle v4.1.5 відповідає версії solcjs
v0.4.21. Розробникам потрібно подати zip-пакет проєкту Truffle та пов'язані документи для вступу до проєкту, які включають, щонайменше,
Наступне:
16/16
1. Базова структура файлу Truffle Project: тест міграцій контрактів на збірку
package.json truffle.js truffle-config.js README.md // Опис інженерної документації
Без node_modules
2. Потрібно надати PPT або PDF-пояснення всього продукту проєкту, включно з вступом до передісторії продукту, значущістю продукту,
Адреса завантаження додатку (опціонально), вступ до процесу використання продукту.
Наступні сторонні розробники можуть реалізовувати контрактні додатки та Chain Pockets відповідно до майбутнього керівного документа ThunderChain
Взаємодія.
Документація та інструменти
API солідності
Документація про трюфелі
Ganache надає графічний інтерфейс для нативного блокчейн-середовища
Zeppelin-Solidty дотримується безпечної та стандартизованої контрактної системи
MetaMask надає браузерні плагіни для браузерів із блокчейн-середовищем через RPC-з'єднання
web3.js JS, інкапсульований Ethereum, для взаємодії з блокчейном
Нарешті, завантажити pdf-документ:

Dev_Guide_zh.pdf (373.55 KB, Кількість завантажень: 6)
 Орендодавець| Опубліковано 03.05.2018 16:01:58 |
Опубліковано 08.05.2018 14:25:10 |
Дізнався, дякую
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com