Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 13646|Odpowiedź: 2

Przewodnik po rozwoju aplikacji blockchain

[Skopiuj link]
Opublikowano 03.05.2018 15:55:28 | | |
Oświadczenie: Poniżej znajduje się dokument "Xunlei Global Blockchain Application Application Development Guide" napisany przez firmę Xunlei, dlaczego warto wykorzystać dokument napisany przez firmę Xunlei jako przewodnik po rozwoju blockchain?

Thunder to w rzeczywistości prywatny łańcuch zbudowany na inteligentnych kontraktach Ethereum, technologia ta jest bardzo dojrzała i posiada dogłębne badania nad technologią blockchain, co ma kluczowe znaczenie dla naszego rozwoju blockchain.

Jak mówi przysłowie: "wyciągnąć wnioski z jednego przykładu", możemy rozwijać inne aplikacje blockchain, czytając dokument przewodnika rozwoju blockchain napisany przez Xunlei, dzięki Xunlei.

Dokument brzmi:

1/16
Przewodnik po rozwoju globalnego konkursu aplikacji blockchain Thunder
Rozwój kontraktu w rekomendacji linii
1. Przed napisaniem smart kontraktów musisz mieć pewną znajomość podstaw blockchaina (załączone: Ethereum Overview ).
2. Poznaj język solidity (solidity API).
3. Naucz się korzystać z ramy trufli w połączeniu z nauką solidności. Używaj trufli uprawianych lokalnie
Uruchamiaj kontrakty w środowisku blockchain.
4. Nauka i używanie zeppelin-solidty (standaryzowanego frameworka kontraktowego poświęconego bezpieczeństwu) oraz integracji projektowej
Tryb kontraktowy, oddzielne dane i logiczne kontrakty, kontrola bezpieczeństwa uprawnień oraz rozważenie logiki aktualizacji.
5. Naucz się wchodzić w interakcje z kontraktami za pomocą web3.js. Użyj wtyczki Metamask i usługi webowej z blockchainem
Interakcja.
6. Forum Q&A: http://wanke.xunlei.com/forum.php?
mod=forumdisplay&fid=53 (Wszelkie problemy, które napotkasz, można cofnąć na tym forum.)
Odpowiemy w ciągu 3 dni roboczych)
Podstawowe pojęcia
Blockchain
Blockchain to zdecentralizowany system rozproszonych obliczeń, którego główną cechą jest trwała niezmienność danych,
Nie da się go sfałszować i cechuje się dużą otwartością, przejrzystością i zaufaniem. Podstawowe technologie obejmują Bizantyjski Algorytm Konsensusu Tolerancyjnego na Uszkodzenia (PBFT),
technologia szyfrowania, technologia P2P itd.
Transakcja
Blockchain można rozumieć jako globalnie współdzielony system bazy danych transakcji. Każde oprogramowanie z uprawnieniami może go odczytać
Weź dane z sieci blockchain. Gdy konieczne jest zmienienie danych w sieci blokowej, należy zainicjować ogólnik
Istnieją żądania akceptowane przez węzły blokowe, które w systemie są łącznie określane jako transakcje.
Transakcje są transakcyjne i są przesyłane do blockchaina, albo nie wszystkie, albo wszystkie realizowane. Dyrektor handlowy
Po ukończeniu wiersza jest on trwale zapisywany na blockchainie i nie może być ponownie modyfikowany ani wykonywany.
Transakcje są inicjowane i podpisywane przez konto w systemie, a dzięki kryptografii transakcje mogą być przechowywane wyłącznie za pomocą klucza prywatnego
2/16
Ktoś ją inicjuje, inni nie mogą modyfikować ani fałszować. Zapewnia to autentyczność i bezpieczeństwo transakcji.
Relacja
W systemie blockchain istnieją dwa typy kont: jedno zewnętrzne, a drugie to konto kontraktowe. Konto zewnętrzne własne
Twoje unikalne klucze publiczne i prywatne, a twoje konto jest kontrolowane przez tę parę kluczy. Konta futures mają własny kod, a konto jest tworzone przez
Własna kontrola kodu.
Konto jest identyfikowane przez adres, a długość adresu jest taka sama i nie ma różnicy między tymi dwoma typami kont. Adres konta zewnętrznego jest podany przez
Klucz publiczny jest generowany, a adres kontraktu wykorzystuje adres, z którego utworzono konto kontraktowe oraz liczbę transakcji, które utworzyły konto kontraktowe
(nonce) jest produkowany. Umowy są realizowane przez oficjalny adres, a zwykłe konta nie mogą bezpośrednio publikować umów. Kombinacja użytkownika
Musi być oficjalnie zrecenzowana i wydana przez Xunlei.
W systemie nie ma różnicy między tymi dwoma typami kont. Każde konto ma 256 bitów w systemie
Struktura pamięci klucz-wartość do 256 bitów nazywana jest pamięcią masową. Każde konto ma saldo zwane
Saldo w Wei można modyfikować, wysyłając transakcję o wartości liczbowej na konto.
Umowa
Kontrakt to konto blockchain, które przechowuje kod, a wywołanie kontraktu jest realizowane poprzez wysyłanie transakcji na to konto. Kiedy
Poprzednim, bardziej popularnym językiem programowania kontraktowego był Solidity. Obecnie konkurs umożliwia składanie kontraktów wyłącznie w języku Solidity.
Umowa dzieli się na dwie części: przechowywanie danych i funkcję – dane przechowują stan umowy, a funkcja to umowa
Interfejs zewnętrzny realizuje zapytania i modyfikację stanu danych poprzez wywoływanie funkcji.
Napisz kontrakt w języku programowania i pobierz bajtkod EVM po kompilacji. Wysyłając transakcję na konto kontraktowe, prawdziwe
Aktualna umowa.
Gaz
Gaz jest jednostką płatniczą blockchaina, a podczas tworzenia transakcji określana jest określona ilość gazu. Panie
Jeśli chodzi o ograniczenie ilości obliczeń na transakcję i zapłacenie opłaty za jej wykonanie. Podczas realizacji transakcji Gas
Będzie on zużywany przez regułę ustaloną przez EVM.
Cena gazu to wartość określona przez twórcę transakcji oraz liczba opłat wymaganych do jej wykonania
Ilość to Gas_Price*Benzyna. Transakcja zakończona Jeśli zostanie gaz, pozostała część wraca do sugestii twórcy
użytkowników. Jeśli gaz jest niewystarczający, wykonanie transakcji się nie powie, a transakcja nie zapobiegnie atakom flood dla bezpieczeństwa systemu
Opłata za przesyłkę nie jest zwracana. Najmniejsza jednostka ceny gazu to wei, 10^18 wei = 1 gram łańcucha.
Solidność
3/16
Solidity to język programowania wysokiego poziomu zaprojektowany dla smart kontraktów, działający na EVM (Ethereum).
Virtual Machine)。 Implementacja projektowania języka jest inspirowana C++/Pythonem/JavaScriptem.
Solidity to język silnie typowany, który obsługuje dziedziczenie, polimorfizm, interfejsy, abstrakcję, biblioteki, niestandardowe typy danych i inne działania
Seks. Solidity obsługuje programowanie instrukcji asemblera, a kod jest kompilowany do bajtkodu i działa na EVM. Solidność wynosi
Najpopularniejszym językiem tworzenia smart kontraktów jest także język polecany i wspierany przez Thunder Contract Platform.
Notatki:
1. Ethereum Virtual Machine to środowisko wirtualne na Ethereum, które zapewnia środowisko uruchomieniowe dla smart kontraktów
Symulowana maszyna. Platforma konkurencyjna jest kompatybilna z EVM, ale musi spełniać ograniczenia korzystania z oficjalnej platformy.
2. Typy kont dzielą się na konta zewnętrzne (zwykłe adresy kont handlowych) oraz konta terminowe. Stwórz umowę
Jest to proces wysyłania transakcji na adres konta docelowego 0.
3. Konkurs określa użycie trufli (trufla v4.1.5 solidity v0.4.21) do opracowywania inteligentnych kombinacji
Platforma weryfikuje bajtkod zgodnie z kodem źródłowym dokumentu przesłanego przez uczestnika. ,
Zawieraj kontrakty z truflą
Framework rozwojowy Smart Contract Solidity Truffle. Zapewnia pełen zestaw narzędzi do rozwoju, debugowania i edycji
Tłumaczenie, wdrażanie i testowanie środowisk lokalnych. Możesz szybko użyć polecenia szablonu unbox na podstawie niektórych szablonów
Wygeneruj odpowiadającą strukturę kontraktu.
Instaluj Truffle
npm i -g trufla
[root@opennode sandai] # wersja truflowa
Truffle v4.1.5 (rdzenny: 4.1.5)
Solidity v0.4.21 (solc-js)
Początek
1. Inicjalizacja projektu kontraktowego truflą
4/16
mkdir simple-storage
CD Simple Storage
trufla init
2. Utworzenie nowego pliku kontraktowego: Możesz użyć trufli do stworzenia kontraktu
Możesz też utworzyć nowy plik bezpośrednio z linii poleceń SimpleStorage
contract/SimpleStorage.sol
SimpleStorage.sol
Solidność pragmy ^0.4.21;
contract SimpleStorage {
uint myVariable;
funkcja zbiór(uint x) public {
myVariable = x;
}
funkcja get() stałe publiczne zwroty
(uint) {
return myVariable;
}
}
3. Dodaj skrypty migracji: Możesz użyć migracji do tworzenia trufli
2_deploy_contract Dodana jest metoda wiersza poleceń, a także możesz bezpośrednio utworzyć nowy plik
migracje/2_deploy_contract.js
2_deploy_contract.js egzekucja migracji trufli
Kolejność linii jest powiązana z nazwą pliku, więc należy nazwać wiele skryptów wdrożonych w kolejności
var SimpleStorage =
artifacts.require("SimpleStorage");
module.exports = function(deployer) {
deployer.deploy(SimpleStorage);
5/16
};
4. Uruchom kontrakt kompilacji truffle, a skompilowany kontrakt znajduje się w folderze build. Na kontrakt
Do wdrożenia wymagany jest odpowiadający plik json zawierający bajtkod, abiCode itp.
5. Edytować truffle.js, aby ustawić kontrakt na wdrożenie trufli oraz połączenie RPC do interakcji z blockchainem.
[root@localhost opennode]# vi truffle.js
module.exports = {
networks: {
development: {
host: "127.0.0.1",
port: 8545,
network_id: "*"
}
}
};
6. Włącz domyślne środowisko blockchain Truffle na konsoli.
Trufle rozwijają
Truffle Development rozpoczęło działalność w
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
Klucze prywatne:
(0)
c87509a1c067bbde78beb793e6fa76530b6382a4c0241e5e
4a9ec0a0f44dc0d3
(1)
ae6ae8e5ccbfb04590405997ee2d52d2b330726137b87505
3c36d94e974d162f
(2)
0dbbe8e4ae425a6d2687f1a7e3ba17bc98c673636790f1b8
ad91193c05875ef1
(3)
c88b703fb08cbea894b6aeff5a544fb92e78a18e19814cd8
5da83b71f772aa6c
(4)
388c684f0ba1ef5017716adb5d21a053ea8e90277d086833
7519f97bede61418
(5)
659cbb0e2411a44DB637789887B1e22153c086a95eb6b18bd
f89de078917abc63
(6)
82d052c865f5763aad42add438569276c00d3d88a2d062d3
6b2bae914d58b8c8
(7)
aa3680d5d48a8283413f7a108367c7299ca73f553735860a
87b08f39395618b7
(8)
0f62D96D6675F32685BBD8AC13cDa7c23436f63efbb9d07
700d8669ff12b7c4
(9)
8d5366123cb560bb606379f90a0bfd4769eecc0557f1b362
dcae9012b548b1e5
Mnemonic: candy maple cake sugar pudding cream
bogaty w miód, gładki, kruszony słodki przysmak
⚠ Ważne ⚠: Ten mnemotechnik został stworzony dla
ty od Truffle. Nie jest bezpieczny.
Upewnij się, że nie używasz go na produkcji
7/16
blockchain, bo inaczej ryzykujesz utratę środków.
Trufla (rozwijać)>
Zapewnia to natywne środowisko blockchain, w którym Truffle może uruchamiać kontrakty, generując domyślnie 10 kont, z których każde jest generowane
Początkowe saldo konta wynosi 100 eterów. Możesz także korzystać z graficznego interfejsu udostępnionego przez Ganache
, musisz zmodyfikować port, do którego podłączona jest konfiguracja.
7. Wykonaj kontrakt wdrożenia portów truffle migrate w nowej konsoli (lub w truffle
rozwijaj konsolę do migracji).
8. Przetestować kod kontraktowy z truflami.
SimpleStorage.deployed().then(function(instance
){return
instance.get.call(); }).then(function(value)
{return value.toNumber()})
// 0
SimpleStorage.deployed().then(function(instance
){return instance.set(100); });
Informacje o transakcjach wyjściowych
SimpleStorage.deployed().then(function(instance
){return
instance.get.call(); }).then(function(value)
{return value.toNumber()});
// 100
9. Przetestowaj kontrakt z truflami Test Użyj trufli do stworzenia testu SimpleStorage, aby utworzyć nowy lub
Bezpośrednio stwórz nowy plik testowy/SimpleStorage.test.js.
const SimpleStorage =
artifacts.require('SimpleStorage');
contract('SimpleStorage', function(accounts) {
8/16
it("powinno twierdzić prawdę", function(done)
{
var simpleStorage =
SimpleStorage.deployed();
VAR instancja;
simpleStorage.then(res => {
instancja = res;
return instance.get()
}).then(value => {
assert.equal('0',
value.toNumber(), 'nie równa się 0')
}).wtedy(() => {
instance.set(100)
}).wtedy(() => {
return instance.get()
}).then(value => {
assert.equal('100',
value.toNumber(), 'nie równa się 100')
})
done();
});
});
W nowej konsoli wejdź test trufli ./test/SimpleStorage.test.js.
10. Testowe kontrakty z remiksem Kontrakty Putting opracowane przy użyciu trufli w remiksie, aby szybko modyfikować
Wdrożenie i realizacja proponowanej umowy. Remix zapewnia środowisko wykonawcze do kompilacji dla kontraktów i może być kontrolowany przez kontrakt
Tabela zawiera szczegółowe informacje o każdej transakcji kontraktu, takie jak parametry wejściowe i wyjściowe, podpisane dane metody,
hash transakcji i inne informacje. Wspieraj debugowanie.
1. Użyj szczegółów kompilacji, aby zobaczyć szczegóły kompilacji kontraktów. Wliczając kod bajtowy, abi
oraz web3.js szybkie wdrożenie metody Drip Ah.
9/16
2. Użyj run do utworzenia kontraktu, a konsola może zobaczyć transakcję, która stworzyła kontrakt.
Użyj Truffle Unbox do tworzenia interaktywnych aplikacji kontraktowych
Powyższe kroki tworzą środowisko kontraktowe, które można kompilować, wdrażać i debugować za pomocą podstawowego init-a truffle. Poniżej
Stwórz nowy projekt za pomocą Truffle Unbox, który dostarcza nam szablon projektu trufli, wewnątrz
Niektóre zależności interakcji z aplikacjami w kontraktach. Oficjalne propozycje możesz sprawdzić w Truffle Boxes
Szablonowe pudełka. Poniżej znajduje się szablon react.
1. Nowy projekt truf-react
mkdir truf-react
10/16
cd truf-react
Truffle Unbox React
Proces unbox pobiera szablon ekstrakcji i wykonuje operacje takie jak npm install.
2. Konfiguruj truffle.js projektu
module.exports = {
Zobacz
<http://truffleframework.com/docs/advanced/confi
Guration>
aby dostosować swoją Truflę
Konfiguracja!
networks: {
development: {
host: '127.0.0.1',
port: '9545',
network_id: '*' // Dopasowanie
dowolny identyfikator sieci
}
}
};
3. Rozpocznij uprawę trufli
4. Poprawka do SRC/App.js
import React, { Component } z 'react'
importuj SimpleStorageContract z
'.. /buduj/kontraktuje/SimpleStorage.json'
importuj getWeb3 z './utils/getWeb3'
importuj './css/oswald.css'
import './css/open-sans.css'
import './css/pure-min.css'
11/16
import './App.css'
Const contract = Require('kontrakt truflowy')
const simpleStorage =
contract(SimpleStorageContract)
class App rozšěrja Component {
konstruktor(props) {
super(props)
this.state = {
storageValue: 0,
web3: null,
inputValue: 0,
address: null
}
this.changeValueHandle =
this.changeValueHandle.bind(this)
this.setHandle =
this.setHandle.bind(this)
}
componentWillMount() {
Pobierz dostawcę sieci i web3
Instancja.
Zobacz utils/getWeb3 po więcej
Informacje.
getWeb3
.then(results => {
this.setState({
web3:
results.web3
})
Utworzenie kontraktu
Gdy Web3 to zapewnił.
12/16
this.instanciateContract()
})
.catch(() => {
console.log('Błąd
Finding Web3.')
})
}
instantiateContract() {
/*
* PRZYKŁAD SMART KONTRAKTÓW
*
* Normalnie te funkcje
należy nazywać w kontekście
* państwowa biblioteka zarządzająca, ale
dla wygody położyłem je tutaj.
*/
this.simpleStorageSet(5)
}
changeValueHandle(event) {
this.setState({
inputValue:
Number(event.target.value)
})
}
setHandle() {
this.simpleStorageSet(this.state.inputValue)
}
simpleStorageSet(x) {
simpleStorage.setProvider(this.state.web3.curren
tProvider)
Deklaruję to na później, więc
13/16
możemy łączyć funkcje na SimpleStorage.
var simpleStorageInstance
Załóż konta.
this.state.web3.eth.getAccounts((error,
konta) => {
simpleStorage.deployed().then((instance) => {
simpleStorageInstance = instancja
this.setState({
address: instance.address })
Magazyny
dana wartość domyślnie 5.
powrót
simpleStorageInstance.set(x, {from:
konta[0]})
}).wtedy((wynik) => {
Zdobądź wartość
z umowy, by udowodnić, że działa.
powrót
simpleStorageInstance.get.call(accounts[0])
}).wtedy((wynik) => {
Stan aktualizacji
Z efektem.
powrót
this.setState({ storageValue: result.c[0] })
})
})
}
render() {
return (
<div className="App">
<nawigacja
className="navbar pure-menu pure-menuhorizontal">
14/16
<a href="#" className="pure-menu-header-puremenu-link">Truffle
Pudełko</a>
</nav>
<Główne
className="container">
<div
className="pure-g">
<div className="pure-u-1-1">
<h1>Gotowe!</h1>
<p>Twoje pudełko na trufle jest zainstalowane i gotowe.</p>
<h2>Przykład inteligentnego kontraktu</h2>
<p>Jeśli twoje kontrakty zostały skompilowane i przeniesione
Poniżej poprawnie pokażemy wartość zapisaną
5 (domyślnie).</p>
<p>Spróbuj zmienić wartość zapisaną online <strong>
59</strong> z App.js.</p>
<p>Wartość przechowywana to:
{this.state.storageValue}</p>
<p>Adres wdrożonego kontraktu:
{this.state.address}</p>
</div>
<div>
<typ wejścia="number" onChange=
{this.changeValueHandle}/>
<przycisk onClick={this.setHandle}>set</button>
15/16
</div>
</div>
</main>
</div>
);
}
}
eksportuj domyślną aplikację
Dodano wywołanie metody zestawu kontraktowego. I pokaż adres umowy.
5. Otwórz nową konsolę i uruchom npm, run start
6. Otwórz http://lcoalhost:3000 w swojej przeglądarce, aby zobaczyć wyniki umowy.
7. Ustaw wartość kontraktu przechowywanego w danych za pomocą pola set i input.
8. Wejść w trufle develop
//将xxx替换为address
SimpleStorage.at('xxxx').then(res => {return
res.get()})
Otrzymuje się wartość zwrotną typu BigNUmber, a wartość w tablicy c jest ustalana
przechowywane Dane.
Użyj wtyczki przeglądarki Metamask, aby wchodzić w interakcję z blockchainem
Odniesienie http://truffleframework.com/tutorials/pet-shop
Uczestnicy składają dokumenty
Konkurs określa wykorzystanie Truffle do tworzenia smart kontraktów, przy czym wersja Truffle v4.1.5 odpowiada wersji solcjs
v0.4.21. Deweloperzy muszą złożyć pakiet zip do projektu Truffle oraz powiązane dokumenty wprowadzające projekt, które obejmują przynajmniej
Następujące:
16/16
1. Podstawowa struktura pliku Truffle Project: Test migracji kontraktów budowania
package.json truffle.js truffle-config.js README.md // Opis dokumentacji inżynierskiej
Nie jest wymagana node_modules
2. Konieczność przedstawienia wyjaśnienia w formacie PPT lub PDF dotyczącego całego produktu projektu, w tym wprowadzenia do tła produktu, znaczenia produktu,
Adres pobrania aplikacji (opcjonalny), wprowadzenie do procesu użytkowania produktu.
Kolejni deweloperzy zewnętrzni mogą wdrażać aplikacje kontraktowe i Chain pockets zgodnie z nadchodzącym wytycznym ThunderChain
Interakcja.
Dokumentacja i narzędzia
API solidity API
Dokumentacja truflow
Ganache zapewnia graficzny interfejs dla natywnego środowiska blockchain
Zeppelin-Solidty zobowiązuje się do bezpiecznego i ustandaryzowanego systemu umów
MetaMask udostępnia wtyczki do przeglądarek korzystających ze środowiska blockchain za pośrednictwem połączeń RPC
web3.js JS zamknięty w Ethereum do interakcji z blockchainem
Na koniec, pobierz dokument PDF:

Dev_Guide_zh.pdf (373.55 KB, Liczba pobranych plików: 6)
 Ziemianin| Opublikowano 03.05.2018 16:01:58 |
Opublikowano 08.05.2018 14:25:10 |
Nauczyłem się, dziękuję
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com