Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 13808|Ответ: 2

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

[Скопировать ссылку]
Опубликовано 03.05.2018 15:55:28 | | |
Заявление: Ниже приведён документ «Xunlei Global Blockchain Application Development Development Guide», написанный компанией Xunlei. Почему использовать этот документ в качестве руководства по разработке блокчейна?

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

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

В документе говорится:

1/16
Руководство по разработке конкуренции приложений блокчейна Thunder Global
Развитие контракта в рекомендации по линии
1. Перед написанием смарт-контрактов необходимо иметь определённое понимание основ блокчейна (прилагается: обзор Ethereum).
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*Gas. Сделка завершена. Если остался газ, оставшаяся часть возвращается в предложение создателя
Пользователей. Если газа недостаточно, выполнение транзакции провалится, и транзакция не сможет предотвратить флуд-атаки для обеспечения безопасности системы
Плата за обработку не возвращается. Наименьшая единица цены газа — вэй, 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. Конкурс предусматривает использование трюфеля (truffle 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() постоянная публичная доходность
(уинт) {
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.deployer (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)
ae6ae8e5ccbfb04590405997ee2d52d2b30726137b87505
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 в новой консоли (или в truffle
Разработать консоль для выполнения миграции).
8. Протестируйте код контракта с помощью truffle develop.
SimpleStorage.deployed().then(function(instance)
){return
instance.get.call(); }).then(функция(значение)
{return value.toNumber()})
// 0
SimpleStorage.deployed().then(function(instance)
){return instance.set(100); });
Информация о выходных транзакциях
SimpleStorage.deployed().then(function(instance)
){return
instance.get.call(); }).then(функция(значение)
{return value.toNumber()});
// 100
9. Тестируйте контракт с помощью теста трюфеля Используйте трюфель, создайте тест SimpleStorage для создания нового или
Создайте новый тест или SimpleStorage.test.js файла напрямую.
const SimpleStorage =
artifacts.require («Простое хранилище»);
contract('SimpleStorage', function(accounts) {
8/16
it("должно утверждать true", функция(сделано)
{
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')
})
сделано();
});
});
В новой консоли введите тест трюфеля ./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'
импортировать 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,
аккаунты) => {
simpleStorage.deployed().then((экземпляр) => {
simpleStorageInstance = экземпляр
this.setState({
address: instance.address })
Магазины а
Заданное значение — 5 по умолчанию.
Возвращение
simpleStorageInstance.set(x, {from:
счета[0]})
}).then((результат) => {
Получите ценность
из контракта, чтобы доказать, что это сработало.
Возвращение
simpleStorageInstance.get.call(accounts[0])
}).then((результат) => {
Обновление состояния
с результатом.
Возвращение
this.setState({ storageValue: result.c[0] })
})
})
}
render() {
Return (
<div className="App">
<nav
className="navbar pure-menu pure-menuhorizontal">
14/16
<a href="#" className="pure-menu-heading 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="число" onChange=
{this.changeValueHandle}/>
<кнопка onClick={this.setHandle}>set</button>
15/16
</div>
</div>
</main>
</div>
);
}
}
экспорт по умолчанию Приложение
Добавлен метод вызова контрактного набора (call of contract set). И покажите адрес контракта.
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: тест миграций контрактов на сборку
package.json truffle.js truffle-config.js README.md // Описание инженерной документации
Без node_modules
2. Необходимо предоставить объяснение всего проекта в формате PPT или PDF, включая представление о предыстории продукта, значимость продукта,
Адрес для загрузки приложения (по желанию), введение в процесс использования продукта.
Последующие сторонние разработчики могут реализовывать контрактные приложения и Chain pockets согласно предстоящему руководству ThunderChain
Взаимодействие.
Документация и инструменты
API solidity
Документация по трюфелям
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