Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 13646|Отговор: 2

Ръководство за разработка на блокчейн приложения

[Копирай линк]
Публикувано в 3.05.2018 г. 15:55:28 ч. | | |
Изявление: Следва документът "Xunlei Global Blockchain Application Development Development Guide", написан от Xunlei Company, защо да използвате документа, написан от Xunlei Company, като ръководство за разработка на блокчейн?

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) се произвежда. Договорите се разполагат по официалния адрес, а обикновените сметки не могат директно да публикуват договори. Комбинацията на потребителя
Тя трябва да бъде официално прегледана и пусната от Сюнлей.
В рамките на системата няма разлика между двата типа сметки. Всяка сметка има 256 бита в системата
Структурата за съхранение с ключова стойност до 256 бита се нарича съхранение. Всяка сметка има баланс, наречен
Балансът във Wei може да се промени чрез изпращане на транзакция с числова стойност към сметката.
Договор
Договорът е блокчейн акаунт, който съхранява кода, а договорното обаждане се извършва чрез изпращане на транзакции към тази сметка. Когато
Предишният по-популярен договорен програмен език беше Solidity. В момента конкурсът поддържа само подаване на договори на езика Solidity.
Договорът е разделен на две части – съхранение на данни и функция, данните съхраняват състоянието на договора, а функцията е договорът
Външният интерфейс реализира заявки за данни и модификация на състоянието чрез извикване на функции.
Напиши договор през програмен език и получи EVM байткода след компилация. Чрез изпращане на транзакция към договорната сметка, реално
Текущо обаждане по договор.
Газ
Газът е платежната единица на блокчейна и когато се създаде транзакция, се посочва определено количество газ. Господарю
Ако целта е да се ограничи размерът на изчисленията върху транзакцията и да се плати такса за изпълнението на транзакцията. По време на изпълнението на сделката, Газ
Той ще бъде погълнат от правило, наложено от EVM.
Цената на газа е стойност, определена от създателя на транзакцията и броя такси, необходими за изпълнение на транзакцията
Сумата е Gas_Price*Газ. Край на транзакцията Ако остане бензин, останалата част се връща на предложението на създателя
потребители. Ако газът е недостатъчен, изпълнението на транзакцията ще се провали и транзакцията ще не успее да предотврати flood атаки за сигурността на системата
Таксата за обработка не се връща. Най-малката единица за цена на газа е wei, 10^18 wei = 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 солидност v0.4.21) за разработване на интелигентни комбинации
Платформата ще проверява байткода според изходния код на документа, представен от участника. ,
Разработване на договори с трюфели
Стратегия за разработка на солидност на смарт договори. Той предоставя пълен набор от разработка, отстраняване на грешки и редактиране
Превод, внедряване и тестване на локални среди. Можеш бързо да използваш командата за отваряне на шаблона въз основа на някои шаблони
Генерирайте съответната структура на договора.
Инсталиране на трюфели
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 simple-storage
Трюфел Инит
2. Създайте нов файл с договор: Можете да използвате трюфел, за да създадете договор
Можете също да създадете нов файл директно от командния ред на SimpleStorage
contract/SimpleStorage.sol
SimpleStorage.sol
прагма-солидност ^0.4.21;
contract SimpleStorage {
uint myVariable;
function set(uint x) public {
myVariable = x;
}
функция get() постоянни публични връщания
(уинт) {
return 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. Пуснете договора за компилиране на трюфели, а компилираният договор е в папката за сглобяване. на договор
Има съответния json файл, съдържащ байткод, abiCode и др., необходим за внедряване
5. Редактирайте truffle.js, за да настроите договора за разгръщане на трюфела и 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)
ae6ae8e5ccbfb04590405997ee2d52b30726137b87505
3c36d94e974d162f
(2)
0dbbe8e4ae425a6d2687f1a7e3ba17bc98c673636790f1b8
ad91193C05875ef1
(3)
c88b703fb08cbea894b6aeff5a544fb92e78a18e19814cd8
5da83b71f772aa6c
(4)
388c684f0ba1ef5017716adb5d21a053ea8e90277d086833
7519f97bede61418
(5)
659cbb0e2411a44db63778987b1e22153c086a95eb6b18bd
f89de078917abc63
(6)
82d052c865f5763aad42add438569276c00d3d88a2d062d3
6b2bae914d58b8c8
(7)
aa3680d5d48a8283413f7a108367c7299ca73f553735860a
87b08f39395618b7
(8)
0f62d96d6675f32685bbdb8ac13cda7c23436f63efbb9d07
700d8669ff12b7c4
(9)
8d5366123cb560bb606379f90a0bfd4769eecc0557f1b362
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(); }).тогава(функция(стойност)
{връщане на стойност.toNumber()})
// 0
SimpleStorage.deployed().then(function(instance)
){return instance.set(100); });
Информация за изходните транзакции
SimpleStorage.deployed().then(function(instance)
){return
instance.get.call(); }).тогава(функция(стойност)
{връща стойност.toNumber()});
// 100
9. Тествайте договора с тест за трюфели. Използвайте трюфел, създавайте тест. SimpleStorage, за да създадете нов или
Създай нов файл тест/SimpleStorage.test.js директно.
const SimpleStorage =
artifacts.require ("SimpleStorage");
contract('SimpleStorage', function(accounts) {
8/16
it("трябва да твърди истината", функция(направено)
{
var simpleStorage =
SimpleStorage.deployed();
VAR инстанция;
simpleStorage.then(res => {
instance = res;
return instance.get()
}).then(стойност => {
assert.equal('0',
value.toNumber(), 'не е равно на 0')
}).тогава(() => {
instance.set(100)
}).тогава(() => {
return instance.get()
}).then(стойност => {
assert.equal('100',
value.toNumber(), 'не е равно на 100')
})
done();
});
});
В новата конзола въведете тест на трюфели ./test/SimpleStorage.test.js.
10. Тестови договори с ремикс Пут договори, разработени с трюфел в ремикс за бързо модифициране
Внедряване и извикване на предложения договор. Remix предоставя среда за изпълнение на компилации за договори и може да бъде контролиран от договора
Таблицата може да види подробна информация за всяка транзакция по договора, като входни и изходни параметри, подписани данни за метода,
транзакционен хеш и друга информация. Поддръжка на дебъгване.
1. Използвайте компилационни детайли, за да видите подробностите за компилацията на договора. Включително байткод, ABI
и използване web3.js бързо внедряване на метода Drip Ah.
9/16
2. Използвайте run, за да създадете договор, и конзолата може да види транзакцията, която е създала договора.
Използвайте Truffle Unbox за създаване на интерактивни договорни приложения
Горните стъпки създават договорна среда, която може да се компилира, внедрява и отстранява грешки с помощта на basic 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'
import 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 разширява Component {
constructor(props) {
super(реквизит)
това.състояние = {
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(събитие) {
this.setState({
inputValue:
Число(event.target.стойност)
})
}
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,
сметки) => {
simpleStorage.deployed().then((instance) => {
simpleStorageInstance = instance
this.setState({
address: instance.address })
Магазини а
дадена стойност, 5 по подразбиране.
Връщане
simpleStorageInstance.set(x, {from:
сметки[0]})
}).тогава((резултат) => {
Вземи стойността
От договора, за да докаже, че е работило.
Връщане
simpleStorageInstance.get.call(accounts[0])
}).тогава((резултат) => {
Състояние на актуализация
с резултата.
Връщане
this.setState({ storageValue: result.c[0] })
})
})
}
render() {
Връщане (
<div className="App">
<nav
className="navbar pure-menu pure-menuhorizontal">
14/16
<a href="#" className="чисто меню-заглавие puremenu-link">Трюфел
Кутия</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}/>
<бутон 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 project и свързаните с него въведени документи, които включват поне
Следното:
16/16
1. Основна файлова структура на Truffle Project: Тест за миграции на договори за строителство
package.json truffle.js truffle-config.js README.md // Описание на инженерната документация
Не се изисква node_modules
2. Необходимо е да се предостави PPT или PDF обяснение на целия проектен продукт, включително представяне на предисторията на продукта, значимостта на продукта,
Адрес за изтегляне на приложението (по избор), въведение в процеса на използване на продукта.
Следващите външни разработчици могат да реализират договорни приложения и Chain джобове според предстоящия ThunderChain инструкционен документ
Взаимодействие.
Документация и инструменти
солидност API
Документация на трюфелите
Ganache предоставя графичен интерфейс за нативната блокчейн среда
Zeppelin-Solidty е ангажирана със сигурна и стандартизирана договорна рамка
MetaMask предоставя плъгини за браузъри с блокчейн среда чрез RPC връзки
web3.js Ethereum-капсулиран JS за взаимодействие с блокчейн
Накрая, изтегляне на pdf документа:

Dev_Guide_zh.pdf (373.55 KB, Брой изтегляния: 6)
 Хазяин| Публикувано в 3.05.2018 г. 16:01:58 ч. |
Публикувано в 8.05.2018 г. 14:25:10 ч. |
Научих, благодаря
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com