이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 13646|회답: 2

블록체인 애플리케이션 개발 가이드

[링크 복사]
게시됨 2018. 5. 3. 오후 3:55:28 | | |
성명: 다음은 Xunlei Company가 작성한 "Xunlei 글로벌 블록체인 애플리케이션 경쟁 개발 가이드" 문서인데, 왜 Xunlei Company가 작성한 문서를 블록체인 개발 가이드로 사용하는가?

Thunder는 실제로 이더리움 스마트 계약으로 구축된 프라이셜 체인으로, 이 기술은 매우 성숙했고, 블록체인 기술에 대한 심층 연구가 이루어져 있어 블록체인 개발에 중요한 의미를 가지고 있습니다.

속담에 '한 사례에서 추론을 도출하라'는 말처럼, 우리는 Xunlei가 작성한 블록체인 개발 가이드 문서를 읽고 Xunlei 덕분에 다른 블록체인 애플리케이션을 개발할 수 있습니다.

문서는 다음과 같이 적혀 있습니다:

1/16
썬더 글로벌 블록체인 애플리케이션 대회 개발 가이드
계약 개발을 노선 권고로 발전시킨다
1. 스마트 계약을 작성하기 전에 블록체인 기본 원리에 대한 일정한 이해가 필요합니다(첨부: 이더리움 개요).
2. solidity 언어(solidity API)를 배우세요.
3. 트러플 프레임워크와 고체성 학습을 결합해 사용하는 법을 배우세요. 트러플 개발은 현지에서 사용하세요
블록체인 환경에서 계약을 실행하세요.
4. 보안에 전념하는 표준화된 계약 프레임워크인 zeppelin-solidty와 설계 통합 학습 및 사용법
계약 모드, 데이터 및 논리 계약 분리, 권한 보안 제어, 업그레이드 로직 고려 등이 있습니다.
5. web3.js를 이용해 계약과 상호작용하는 법을 배우세요. Metamask 플러그인과 블록체인 웹 서비스를 사용하세요
상호작용.
6. 포럼 Q&A: http://wanke.xunlei.com/forum.php?
mod=forumdisplay&fid=53 (이 포럼에서 발생하는 모든 문제는 복구할 수 있습니다.)
3영업일 이내에 답변드리겠습니다)
기본 개념
블록체인
블록체인은 분산형 분산 컴퓨팅 시스템으로, 주요 특징은 데이터의 영구적인 불변성입니다.
이 계약은 만들어질 수 없으며, 높은 수준의 개방성, 투명성, 신뢰를 가지고 있습니다. 핵심 기술에는 비잔틴 내결함성 합의 알고리즘(PBFT)이 포함됩니다.
암호화 기술, P2P 기술 등.
거래
블록체인은 전 세계적으로 공유되는 거래 데이터베이스 시스템으로 이해할 수 있습니다. 허가만 있으면 어떤 소프트웨어든 읽을 수 있습니다
블록체인 네트워크에서 데이터를 가져와. 블록 네트워크에서 데이터를 변경해야 할 때는 블랭킷이 시작되어야 합니다
블록 노드가 승인하는 요청들이 있으며, 시스템 내에서 이를 통틀어 트랜잭션이라고 부릅니다.
거래는 거래형이며 블록체인에 제출되며, 전부 또는 모두 실행되지 않습니다. 트레이딩 임원
행이 완료되면 블록체인에 영구히 저장되며 수정하거나 다시 실행할 수 없습니다.
거래는 시스템 내 계정에서 시작되고 서명되며, 암호화를 통해 거래는 오직 개인 키로만 유지될 수 있습니다
2/16
누군가가 시작하고, 다른 사람들은 수정하거나 위조할 수 없습니다. 이는 거래의 진위성과 보안을 보장합니다.
계정
블록체인 시스템에는 두 가지 유형의 계좌가 있는데, 하나는 외부이고 다른 하나는 계약 계좌입니다. 외부 계정 소유
당신만의 고유한 공개 및 개인 키, 그리고 당신의 계정은 이 키 쌍에 의해 관리됩니다. 선물 계좌는 자체 코드가 있으며, 계좌는
자체 코드 통제.
계정은 주소로 식별되며, 주소 길이도 동일하며 두 계정 유형 간에 차이가 없습니다. 외부 계좌의 주소는 다음과 같이 제공됩니다
공개키가 생성되고, 계약 주소는 계약 계좌가 생성된 주소와 계약 계좌를 생성한 거래 수를 사용합니다
(논스)가 만들어집니다. 계약서는 공식 주소로 배포되며, 일반 계정은 계약서를 직접 게시할 수 없습니다. 사용자의 조합
반드시 순뢰에서 공식 검토 및 공개되어야 합니다.
시스템 내에서 두 유형의 계좌 사이에 차이가 없습니다. 각 계정에는 시스템 내에 256비트가 있습니다
최대 256비트까지의 키-값 저장 구조를 저장(storage)이라고 합니다. 각 계좌에는 다음과 같은 잔액이 있습니다
웨이(wei)의 잔액은 숫자 값을 가진 거래를 계좌에 전송함으로써 수정할 수 있습니다.
계약
계약은 코드를 저장하는 블록체인 계정이며, 계약 호출은 이 계좌로 거래를 전송함으로써 이루어집니다. 언제
이전의 더 인기 있던 계약형 프로그래밍 언어는 Solidity였습니다. 현재 이 콘테스트는 Solidity 언어로만 계약서 제출을 지원합니다.
계약은 데이터 저장과 기능 두 부분으로 나뉘며, 데이터는 계약의 상태를 저장하고, 함수는 계약입니다
외부 인터페이스는 함수를 호출하여 데이터 쿼리와 상태 변경을 구현합니다.
프로그래밍 언어로 계약서를 작성하고, 컴파일 후 EVM 바이트코드를 받으세요. 계약 계좌로 거래를 보내는 것, 실제
현재 계약 콜.
가스
가스는 블록체인의 결제 단위이며, 거래가 생성될 때 일정량의 가스가 지정됩니다. 경
만약 거래에 대한 계산량을 제한하고 거래 실행에 대한 수수료를 지불하는 것이라면, 거래 실행 중, 가스가
이 데이터는 EVM이 정한 규칙에 의해 소비될 것입니다.
가스 가격은 거래 생성자가 지정한 값과 거래 실행에 필요한 수수료 수입니다
그 금액은 Gas_Price*Gas입니다. 거래 종료 남은 가스가 있으면 남은 부분을 창작자 제안자에게 반환합니다
사용자들. 가스가 부족하면 트랜잭션 실행이 실패하고, 시스템 보안을 위한 플러드 공격을 막지 못하게 됩니다
처리 수수료는 반환되지 않습니다. 가장 작은 휘발유 단위는 웨이이며, 10^18 웨이 = 1체인 그램입니다.
견고성
3/16
Solidity는 스마트 계약용으로 설계된 고급 프로그래밍 언어로, EVM(이더리움)에서 실행됩니다.
가상 머신). 언어 설계 구현은 C++/Python/JavaScript의 영향을 받았습니다.
Solidity는 상속, 다형성, 인터페이스, 추상화, 라이브러리, 사용자 지정 데이터 타입 등 다양한 기능을 지원하는 강력한 타입 언어입니다
섹스. Solidity는 어셈블리 명령어 프로그래밍을 지원하며, 코드는 바이트코드로 컴파일되어 EVM에서 실행됩니다. 고체성은
가장 인기 있는 스마트 계약 개발 언어는 Thunder Contract Platform에서 권장하고 지원하는 언어이기도 합니다.
노트:
1. 이더리움 가상 머신은 스마트 계약을 위한 런타임 환경을 제공하는 이더리움 상의 가상 환경입니다
시뮬레이션 기계. 이 대회 플랫폼은 EVM과 호환되지만, 공식 플랫폼의 사용 제한을 준수해야 합니다.
2. 계좌 유형은 외부 계좌(일반 거래 계좌 주소)와 선물 계좌로 나뉩니다. 계약서 작성
이는 목적지 계좌 주소 0으로 거래를 전송하는 과정입니다.
3. 대회는 지능형 조합을 개발하기 위해 송로버섯(truffle v4.1.5, solidity v0.4.21)을 사용하는 것을 명시합니다
플랫폼은 참가자가 제출한 문서의 소스 코드에 따라 바이트코드를 검증합니다. ,
트러플과 계약을 개발하세요
스마트 계약 견고성 개발 프레임워크 트러플. 개발, 디버깅 및 편집 기능을 완벽하게 제공합니다
온프레미스 환경의 번역, 배포 및 테스트. 템플릿 명령어를 사용하면 '빠르게 언박스' 명령어를 사용할 수 있습니다
해당 계약 구조를 생성하세요.
트러플 설치
NPM I -G 트러플
[root@opennode 산다이]# 트러플 버전
트러플 v4.1.5 (코어: 4.1.5)
Solidity v0.4.21 (solc-js)
시작
1. 트러플로 계약 프로젝트를 초기화합니다
4/16
mkdir 단순 저장
CD 단순 저장장치
트러플 이니트
2. 새 계약 파일 만들기: Truffle을 사용해 계약서를 만들 수 있습니다
또한 SimpleStorage 명령줄에서 직접 새 파일을 생성할 수도 있습니다
contract/SimpleStorage.sol
SimpleStorage.sol
프라그마 견고성 ^0.4.21;
계약 SimpleStorage {
uint myVariable;
function set(uint x) public {
myVariable = x;
}
함수 get() 상수 공개 반환
(유인트) {
return: myVariable;
}
}
3. 마이그레이션 스크립트 추가: Truffle Create 마이그레이션을 사용할 수 있습니다
명령줄 메서드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 컴파일 계약을 실행하고, 컴파일된 계약은 빌드 폴더에 있습니다. 계약에 따라
배포에 필요한 바이트코드, abiCode 등이 포함된 해당 json 파일이 있습니다
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의 기본 블록체인 환경을 켜세요.
트러플 개발
트러플 개발은
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)
8d5366123CB560bb606379F90A0BFD4769eecc0557F1B362
DCAE9012B548B1E5
Mnemonic: candy maple cake sugar pudding cream
꿀처럼 부드러운 부스러기 달콤한 간식
⚠ 중요 ⚠ : 이 기억법은 다음을 위해 만들어졌습니다
너는 트러플 덕분이야. 안전하지 않습니다.
생산 과정에서는 사용하지 않도록 주의하세요
7/16
그렇지 않으면 자금을 잃을 위험이 있습니다.
트러플(현상)>
이 시스템은 Truffle이 기본적으로 10개의 계정을 생성하고 각각 생성되는 계약을 실행할 수 있는 네이티브 블록체인 환경을 제공합니다
초기 계좌 잔액은 100 ether입니다. 또한 Ganache에서 제공하는 그래픽 인터페이스도 사용할 수 있습니다
, 구성이 연결된 포트를 수정해야 합니다.
7. 트러플 마이그레이션 포트 배포 계약을 새 콘솔(또는 트러플)에서 실행하세요
마이그레이션을 실행하기 위해 콘솔을 개발하세요.
8. 트러플 개발로 계약 코드를 테스트합니다.
SimpleStorage.deployed().then(function(instance
){반환
인스턴스.get.call(); }).then(function(value)
{return value.toNumber()})
// 0
SimpleStorage.deployed().then(function(instance
){return instance.set(100); });
출력 거래 정보
SimpleStorage.deployed().then(function(instance
){반환
인스턴스.get.call(); }).then(function(value)
{return value.toNumber()});
// 100
9. 트러플 테스트 계약 테스트 사용: truffle create test SimpleStorage 사용하여 새로운 또는
새 파일을 생성해 테스트/SimpleStorage.test.js 직접 하세요.
const SimpleStorage =
artifacts.require('SimpleStorage');
contract('SimpleStorage', function(accounts) {
8/16
it("참을 주장해야 한다", function(완료)
{
var simpleStorage =
SimpleStorage.deployed();
var 인스턴스;
simpleStorage.then(res => {
인스턴스 = res;
Return instance.get()
}).then(value => {
assert.equal('0',
value.toNumber(), '0과 같지 않다')
}).then(() => {
인스턴스.set(100)
}).then(() => {
Return instance.get()
}).then(value => {
assert.equal('100',
value.toNumber(), '100과 같지 않음')
})
done();
});
});
새 콘솔에서는 truffle test ./test/SimpleStorage.test.js를 입력하세요.
10. 리믹스를 사용한 계약 테스트 계약 트러플을 사용해 빠르게 수정하기 위해 개발된 계약
제안된 계약의 배포 및 발동. Remix는 계약을 위한 컴파일 런타임 환경을 제공하며, 계약에 의해 제어할 수 있습니다
이 테이블은 입출력 매개변수, 서명된 메서드 데이터 등 계약의 각 트랜잭션에 대한 상세 정보를 볼 수 있습니다.
트랜잭션 해시 및 기타 정보. 디버깅 지원.
1. 컴파일 디테일을 사용해 계약 컴파일 세부사항을 확인하세요. 바이트코드, abi 포함
그리고 드립 아(Drip Ah) 방법web3.js 신속한 적용을 사용했습니다.
9/16
2. run을 사용해 계약을 생성하고, 콘솔이 계약을 생성한 거래를 볼 수 있습니다.
Truffle Unbox를 사용해 인터랙티브 계약 앱을 만드세요
위의 단계들은 기본 truffle init을 사용하여 컴파일, 배포, 디버깅이 가능한 계약 환경을 만듭니다. 아래
Truffle Unbox로 새 프로젝트를 만들어보세요. 이 템플릿은 내부에 트러플 프로젝트 템플릿을 제공합니다
일부 계약 애플리케이션 상호작용 환경 의존성도 있습니다. 트러플 박스에서 공식 상품을 확인해 보실 수 있습니다
템플릿 박스. 다음은 react 템플릿입니다.
1. 새로운 프로젝트 truf-react
mkdir truf-react
10/16
CD 트루프-리액트
트러플 언박스 반응
언박스 프로세스는 추출 템플릿을 다운로드하고 npm 설치와 같은 작업을 수행합니다.
2. 프로젝트 truffle.js 구성
module.exports = {
참고
<http://truffleframework.com/docs/advanced/confi
구라티온>
트러플을 맞춤 설정할 수 있습니다
구성!
networks: {
development: {
host: '127.0.0.1',
port: '9545',
network_id: '*' // 일치
어떤 네트워크 ID
}
}
};
3. 송로버섯 현상 시작
4. SRC/App.js 개정
import React, { Component } from 'react'
SimpleStorageContract 를 import에서
'.. /건설/계약/SimpleStorage.json'
'./utils/getWeb3'에서 getWeb3를 import하세요.
'./css/oswald.css' 가져오기
'./css/open-sans.css' 가져오기
'./css/pure-min.css' 가져오기
11/16
import './App.css'
const contract = require('truffle-contract')
const simpleStorage =
계약(SimpleStorageContract)
class App extends Component {
건설자(props) {
슈퍼(소품)
this.state = {
storageValue: 0,
web3: null,
inputValue: 0,
address: null
}
this.changeValueHandle =
this.changeValueHandle.bind(this)
this.setHandle =
this.setHandle.bind(this)
}
componentWillMount() {
네트워크 제공업체와 웹3 가입
예를 들어.
자세한 내용은 utils/getWeb3를 참조하세요
정보.
getWeb3
.then(results => {
this.setState({
web3:
결과.web3
})
계약을 체결한다
웹3가 제공된 후,
12/16
this.instantiateContract()
})
.catch(() => {
console.log('에러'
웹3를 찾는 것.')
})
}
instantiateContract() {
/*
* 스마트 계약 예시
*
* 보통 이 기능들은

* 국가 관리 도서관, 하지만
편의를 위해 여기에 배치했습니다.
*/
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)
나중을 위해 이 내용을 선언합니다
13/16
SimpleStorage에서 함수를 연속으로 연결할 수 있습니다.
var simpleStorageInstance
계정 확보.
this.state.web3.eth.getAccounts((오류,
계정) => {
simpleStorage.deployed().then((instance) => {
simpleStorageInstance = 인스턴스
this.setState({
address: instance.address })
상점
기본값으로 5.
귀환
simpleStorageInstance.set(x, {from:
회계[0]})
}).then((result) => {
가치를 얻으세요
계약서에서 효과가 있음을 증명할 수 있습니다.
귀환
simpleStorageInstance.get.call(accounts[0])
}).then((result) => {
업데이트 상태
결과가 나오면,
귀환
this.setState({ storageValue: result.c[0] })
})
})
}
render() {
반환 (
<div className="App">
<네비게이션
className="navbar pure-menu pure-menuhorizontal">
14/16
<a href="#" className="pure-menu-heading puremenu-link">Truffle
박스</a>
</nav>
<메인
className="container">
<div
className="pure-g">
<div className="pure-u-1-1">
<h1>준비 완료!</h1>
<p>트러플 박스는 설치되어 준비되었습니다.</p>
<h2>스마트 계약 예시</h2>
<p>계약서가 컴파일되고 마이그레이션되었다면
성공하면, 아래는 저장된 값이 다음과 같습니다.
5(기본값).</p>
<p>온라인에 저장된 값을 바꿔보세요 <strong>
App.js 중 59</strong>명.</p>
<p>저장된 값은 다음과 같습니다:
{this.state.storageValue}</p>
<p>배포 계약 주소:
{this.state.address}</p>
</div>
<div>
<입력 유형="number" onChange=
{this.changeValueHandle}/>
<button onClick={this.setHandle}>set</button>
15/16
</div>
</div>
</main>
</div>
);
}
}
기본 앱 내보내기
계약 집합 호출 메서드를 추가했습니다. 그리고 계약서 주소를 보여주세요.
5. 새 콘솔을 열고 NPM 실행 시작
6. 브라우저에서 http://lcoalhost:3000 를 열어 계약 결과를 확인하세요.
7. 세트 박스와 입력 박스를 통해 저장된 계약 데이터의 값을 설정합니다.
8. 진입 in trufle development(진입 발전)
//将xxx替换为address
SimpleStorage.at('xxxx').then(res => {return
res.get()})
BigNUmber 타입의 반환 값이 얻어지고, c 배열의 값이 설정됩니다
저장된 데이터.
브라우저 플러그인 Metamask를 사용해 블록체인과 상호작용하세요
참고 문헌 http://truffleframework.com/tutorials/pet-shop
참가자들은 서류를 제출합니다
경쟁 경쟁에서는 트러플을 사용해 스마트 계약을 개발할 것을 명시하며, 트러플 버전 v4.1.5는 solcjs 버전에 대응합니다
v0.4.21. 개발자는 Truffle 프로젝트 zip 패키지와 관련 프로젝트 소개 문서를 제출해야 하며, 여기에는 최소한
다음은 다음과 같습니다:
16/16
1. Truffle 프로젝트 기본 파일 구조: 계약 구축 마이그레이션 테스트
package.json truffle.js truffle-config.js README.md // 엔지니어링 문서 설명
node_modules 필요 없어요
2. 제품 배경 소개, 제품 중요성을 포함한 전체 프로젝트 제품에 대한 PPT 또는 PDF 설명을 제공해야 합니다.
앱 다운로드 주소(선택 사항), 제품 사용 프로세스 소개.
이후 제3자 개발자들은 다가오는 ThunderChain 가이드 문서에 따라 계약 애플리케이션과 체인 포켓을 구현할 수 있습니다
상호작용.
문서 및 도구
solidity API
트러플 문서
가나슈는 네이티브 블록체인 환경을 위한 그래픽 인터페이스를 제공합니다
Zeppelin-Solidty는 안전하고 표준화된 계약 체계를 준수하는 데 전념하고 있습니다
MetaMask는 RPC 연결을 통해 블록체인 환경을 가진 브라우저용 브라우저 플러그인을 제공합니다
web3.js 블록체인과 상호작용하기 위한 이더리움 캡슐화된 JS
마지막으로 PDF 문서 다운로드:

Dev_Guide_zh.pdf (373.55 KB, 다운로드 횟수: 6)
 집주인| 게시됨 2018. 5. 3. 오후 4:01:58 |
게시됨 2018. 5. 8. 오후 2:25:10 |
배웠습니다, 감사합니다
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com