Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 13646|Respuesta: 2

Guía de Desarrollo de Aplicaciones Blockchain

[Copiar enlace]
Publicado en 3/5/2018 15:55:28 | | |
Declaración: A continuación se presenta el documento "Guía Global de Desarrollo de la Competencia de Aplicaciones Blockchain Xunlei" escrito por Xunlei Company, ¿por qué usar el documento escrito por Xunlei Company como guía de desarrollo blockchain?

Thunder es en realidad una cadena privada construida con contratos inteligentes de Ethereum, la tecnología está muy madura y cuenta con una investigación profunda sobre la tecnología blockchain, que tiene una importancia guía para nuestro desarrollo blockchain.

Como dice el refrán, "saca inferencias de un ejemplo", podemos desarrollar otras aplicaciones blockchain leyendo el documento de desarrollo blockchain escrito por Xunlei, gracias a Xunlei.

El documento dice:

1/16
Guía global de desarrollo de competencias de aplicaciones blockchain Thunder
Desarrollo del contrato en la recomendación de la línea
1. Antes de redactar contratos inteligentes, necesitas tener un cierto conocimiento de los fundamentos de blockchain (adjunto: Resumen de Ethereum).
2. Aprender el lenguaje Solidity (API Solidity).
3. Aprende a usar el marco de la trufa en combinación con el aprendizaje de solidez. Utiliza la trufa para desarrollar localmente
Ejecuta contratos en un entorno blockchain.
4. Aprender y usar zeppelin-solidty (un marco contractual estandarizado dedicado a la seguridad) y diseñar integración
Modo contrato, separar los contratos de datos y lógicos, controlar la seguridad de permisos y considerar la lógica de actualización.
5. Aprende a interactuar con contratos usando web3.js. Utiliza el plugin Metamask y el servicio web con blockchain
Interacción.
6. Foro de preguntas y respuestas: ¿http://wanke.xunlei.com/forum.php?
mod=forumdisplay&fid=53 (Cualquier problema que encuentres puede revertirse en este foro.)
Te responderemos en un plazo de 3 días laborables)
Conceptos básicos
Blockchain
Blockchain es un sistema de computación distribuida descentralizada, cuya característica principal es la inmutabilidad permanente de los datos,
No puede ser falsificada y tiene un alto grado de apertura, transparencia y confianza. Las tecnologías principales incluyen el Algoritmo de Consenso Tolerante a Fallas Bizantinas (PBFT),
tecnología de cifrado, tecnología P2P, etc.
Transacción
La blockchain puede entenderse como un sistema de base de datos de transacciones compartida globalmente. Cualquier software con permiso puede leerlo
Tomemos datos de la red blockchain. Cuando es necesario modificar los datos en la red de bloques, debe iniciarse una manta
Existen solicitudes aceptadas por nodos de bloque, que colectivamente se denominan transacciones en el sistema.
Las transacciones son transaccionales y se envían a la blockchain, ya sea que no se ejecuten todas o todas. Un ejecutivo comercial
Una vez completada la fila, se guarda permanentemente en la blockchain y no puede ser modificada ni ejecutada de nuevo.
Las transacciones se inician y firman por la cuenta en el sistema, y mediante criptografía, las transacciones solo pueden mantenerse con la clave privada
2/16
Alguien lo inicia, otros no pueden modificar ni falsificar. Esto garantiza la autenticidad y seguridad de la transacción.
Cuenta
Existen dos tipos de cuentas en el sistema blockchain: una es externa y la otra es la cuenta de contrato. Cuenta externa propiedad
Tus propias claves públicas y privadas únicas, y tu cuenta está controlada por este par de claves. Las cuentas de futuros tienen su propio código, y la cuenta se crea por
Control propio del código.
La cuenta se identifica por una dirección, y la longitud de la dirección es la misma, y no hay diferencia entre los dos tipos de cuentas. La dirección de la cuenta externa es proporcionada por
Se genera la clave pública, y la dirección del contrato utiliza la dirección desde la que se creó la cuenta del contrato y el número de transacciones que crearon la cuenta del contrato
(nonce). Los contratos se establecen mediante la dirección oficial, y las cuentas ordinarias no pueden publicar directamente los contratos. La combinación del usuario
Debe ser revisado oficialmente y publicado por Xunlei.
Dentro del sistema, no hay diferencia entre los dos tipos de cuentas. Cada cuenta tiene 256bits dentro del sistema
La estructura de almacenamiento clave-valor hasta 256 bits se denomina almacenamiento. Cada cuenta tiene un saldo llamado
El saldo, en Wei, puede modificarse enviando una transacción con un valor numérico a la cuenta.
Contrato
Un contrato es una cuenta blockchain que almacena el código, y la llamada al contrato se realiza enviando transacciones a esta cuenta. Cuando
El lenguaje de programación por contrato anterior y más popular era Solidity. Actualmente, el concurso solo admite la presentación de contratos en lenguaje Solidity.
El contrato se divide en dos partes: almacenamiento y función de datos; los datos almacenan el estado del contrato, y la función es el contrato
La interfaz externa realiza consultas de datos y modificaciones de estado llamando a funciones.
Escribe un contrato a través de un lenguaje de programación y obtén el bytecode de la EVM después de compilarlo. Al enviar una transacción a la cuenta contractual, real
Llamada actual para el contrato.
Gas
El gas es la unidad de pago de la blockchain, y cuando se crea una transacción, se especifica una cierta cantidad de gas. Señor
Si es para limitar la cantidad de cálculo sobre la transacción y pagar una comisión por la ejecución de la misma. Durante la ejecución de la transacción, Gas
Será consumido por una regla establecida por la EVM.
El precio del gas es un valor especificado por el creador de la transacción y el número de comisiones requeridas para ejecutar la transacción
La cantidad es Gas_Price*Gas. Fin de la transacción Si queda gas, la parte restante se devuelve a la sugerencia del creador
usuarios. Si el gas es insuficiente, la ejecución de la transacción fallará y la transacción no evitará ataques por inundación para la seguridad del sistema
La tarifa de manipulación no se devuelve. La unidad más pequeña de precio de la gasolina es wei, 10^18 wei = 1 gramo de cadena.
Solidez
3/16
Solidity es un lenguaje de programación de alto nivel diseñado para contratos inteligentes, que funciona en EVM (Ethereum).
Virtual Machine)。 La implementación del diseño del lenguaje está influida por C++/Python/JavaScript.
Solidity es un lenguaje fuertemente tipado que soporta herencia, polimorfismo, interfaces, abstracción, bibliotecas, tipos de datos personalizados y más
Sexo. Solidity soporta programación de instrucciones ensambladoras, y el código se compila en bytecode y se ejecuta en la EVM. La solidez es
El lenguaje de desarrollo de contratos inteligentes más popular es también el recomendado y soportado por la Thunder Contract Platform.
Notas:
1. Ethereum Virtual Machine es un entorno virtual en Ethereum que proporciona un entorno de ejecución para contratos inteligentes
Máquina simulada. La plataforma de competición es compatible con EVM, pero debe cumplir con las restricciones de uso de la plataforma oficial.
2. Los tipos de cuentas se dividen en cuentas externas (direcciones ordinarias de cuentas de trading) y cuentas de futuros. Crea un contrato
Es el proceso de enviar una transacción a la dirección de la cuenta de destino 0.
3. El concurso especifica el uso de trufa (trufa v4.1.5 solidez v0.4.21) para desarrollar combinaciones inteligentes
La plataforma verificará el bytecode según el código fuente del documento enviado por el participante. ,
Desarrollar contratos con trufa
Marco de desarrollo de solidez de contratos inteligentes Truffle. Ofrece un conjunto completo de desarrollo, depuración y edición
Traducción, despliegue y pruebas de entornos on-premise. Puedes usar el comando de desacuadrón de plantilla rápidamente basándote en algunas plantillas
Genera la estructura contractual correspondiente.
Instalar Truffle
NPM I -g trufa
[root@opennode sandai]# Versión trufa
Trufa v4.1.5 (núcleo: 4.1.5)
Solidity v0.4.21 (solc-js)
Comienzo
1. Inicializar el proyecto contratado con trufa
4/16
Almacenamiento simple de MKDIR
Almacenamiento simple de CD
Trufa init
2. Crear un nuevo archivo de contrato: Puedes usar Truffle para crear el contrato
También puedes crear un archivo nuevo directamente desde la línea de comandos de SimpleStorage
contract/SimpleStorage.sol
SimpleStorage.sol
Solidez de Pragma ^0.4.21;
contract SimpleStorage {
uint myVariable;
function set(uint x) public {
miVariable = x;
}
función get() rendimientos públicos constantes
(uint) {
return myVariable;
}
}
3. Añadir scripts de migración: Puedes usar Truffle Create Migration
2_deploy_contract método de línea de comandos se añade y también puedes crear directamente un archivo nuevo
migraciones/2_deploy_contract.js
2_deploy_contract.js la ejecución de la migración de trufas
El orden de la línea está relacionado con el nombre del archivo, por lo que es necesario nombrar varios scripts de despliegue en orden
var SimpleStorage =
artefacts.require("SimpleStorage");
module.exports = function(deployer) {
deployer.deploy (SimpleStorage);
5/16
};
4. Ejecuta el contrato de compilación de truffle, y el contrato compilado está en la carpeta de compilación. por contrato
Existe un archivo json correspondiente que contiene bytecode, abiCode, etc., necesario para el despliegue
5. Editar el truffle.js para configurar el contrato de despliegue de trufa y la conexión RPC para interactuar con la blockchain.
[root@localhost opennode]# vi truffle.js
module.exports = {
networks: {
development: {
host: "127.0.0.1",
port: 8545,
network_id: "*"
}
}
};
6. Activa el entorno blockchain predeterminado de Truffle en la consola.
Revelación de la trufa
Truffle Develop comenzó en
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
Llaves privadas:
(0)
c87509a1c067bbde78beb793e6fa76530b6382a4c0241e5e
4a9ec0a0f44dc0d3
(1)
AE6AE8e5CCBFB04590405997EE2D52D2B330726137B87505
3c36d94e974d162f
(2)
0dbbe8e4ae425a6d2687f1a7e3ba17bc98c6736790f1b8
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
dulce dulce de crumble rico en miel
⚠ Importante ⚠: Este mnemónico fue creado para
tú por Truffle. No es seguro.
Asegúrate de no usarlo en producción
7/16
blockchains, o arriesgas perder fondos.
Trufa (desarrollar)>
Esto proporciona un entorno blockchain nativo para que Truffle ejecute contratos, generando 10 cuentas por defecto, cada una de las cuales se genera
El saldo inicial de la cuenta es de 100 ether. También puedes usar la interfaz gráfica proporcionada por Ganache
, necesitas modificar el puerto al que está conectada la configuración.
7. Ejecutar el contrato de despliegue del puerto de migración de truffle en una nueva consola (o en truffle
desarrolla la consola para realizar migración).
8. Prueba el código del contrato con revelado de trufa.
SimpleStorage.deployed().then(function(instance
){return
instance.get.call(); }).entonces(función(valor)
{return value.toNumber()})
// 0
SimpleStorage.deployed().then(function(instance
){return instance.set(100); });
Información de la transacción de salida
SimpleStorage.deployed().then(function(instance
){return
instance.get.call(); }).entonces(función(valor)
{return value.toNumber()});
// 100
9. Prueba el contrato con la prueba de trufa Usa trufa para crear la prueba SimpleStorage para crear una nueva o
Crea un nuevo archivo/SimpleStorage.test.js directamente.
const SimpleStorage =
artefacts.require('SimpleStorage');
contract('SimpleStorage', function(accounts) {
8/16
it("debería afirmar verdadero", función(done)
{
var simpleStorage =
SimpleStorage.deployed();
instancia var;
simpleStorage.then(res => {
instancia = res;
return instance.get()
}).then(value => {
assert.equal('0',
value.toNumber(), 'no es igual a 0')
}).then(() => {
instance.set(100)
}).then(() => {
return instance.get()
}).then(value => {
Assert.equal('100',
value.toNumber(), 'no es igual a 100')
})
hecho();
});
});
En la nueva consola, introduce la prueba de trufa ./test/SimpleStorage.test.js.
10. Contratos de prueba con remix Contratos de put desarrollados usando trufa en remix para modificar rápidamente
Despliegue e invocación del contrato propuesto. Remix proporciona un entorno de compilación en tiempo de ejecución para contratos y puede ser controlado por el contrato
La tabla puede ver la información detallada de cada transacción del contrato, como parámetros de entrada y salida, datos de métodos con signos,
Hash de transacciones y otra información. Soporte para depuración.
1. Utiliza el detalle de compilación para ver los detalles de la compilación del contrato. Incluyendo bytecode, abi
y usando web3.js despliegue rápido del método Goteo Ah.
9/16
2. Usar ejecutar para crear un contrato, y la consola podrá ver la transacción que creó el contrato.
Utiliza Truffle Unbox para crear aplicaciones de contratos interactivas
Los pasos anteriores crean un entorno contractual que puede compilarse, desplegarse y depurarse usando basic truffle init. Abajo
Crea un nuevo proyecto con Truffle Unbox, que nos proporciona una plantilla de proyecto de trufa en el interior
Algunas dependencias del entorno de interacción con aplicaciones de contrato. Puedes consultar las ofertas oficiales en Trufa
Cuadros de plantilla. A continuación se muestra la plantilla de React.
1. Nuevo proyecto truf-react
MKDIR Truf-React
10/16
CD Truf-React
Trufa Unbox React
El proceso de unbox descarga la plantilla de extracción y realiza operaciones como la instalación de npm.
2. Configurar el truffle.js del proyecto
module.exports = {
Véase
<http://truffleframework.com/docs/advanced/confi
Guración>
para personalizar tu Trufa
¡Configuración!
networks: {
development: {
host: '127.0.0.1',
port: '9545',
network_id: '*' // Match
Cualquier ID de red
}
}
};
3. Inicia un desarrollo de trufa
4. Enmienda al SRC/App.js
importar React, { Componente } de 'react'
importar SimpleStorageContract desde
'.. /construye/contrata/SimpleStorage.json'
importar getWeb3 desde './utils/getWeb3'
importar './css/oswald.css'
importar './css/open-sans.css'
importar './css/pure-min.css'
11/16
importar './App.css'
contrato const = requerir('contrato truffle')
const simpleStorage =
contract(SimpleStorageContract)
class App extends Component {
constructor(props) {
super(utilería)
this.state = {
storageValue: 0,
web3: null,
inputValue: 0,
address: null
}
this.changeValueHandle =
this.changeValueHandle.bind(this)
this.setHandle =
this.setHandle.bind(this)
}
componentWillMount() {
Obtén proveedor de red y web3
instancia.
Consulta utils/getWeb3 para más información
información.
getWeb3
.then(results => {
this.setState({
web3:
results.web3
})
Instanciar contrato
Una vez que Web3 se proporcionó.
12/16
this.instantiateContract()
})
.catch(() => {
console.log('Error
Encontrando Web3.')
})
}
instanceiateContract() {
/*
* EJEMPLO DE CONTRATO INTELIGENTE
*
* Normalmente estas funciones
se llama en el contexto de un
* biblioteca de gestión estatal, pero
Por comodidad, los he colocado aquí.
*/
this.simpleStorageSet(5)
}
changeValueHandle(event) {
this.setState({
inputValue:
Número(evento.objetivo.valor)
})
}
setHandle() {
this.simpleStorageSet(this.state.inputValue)
}
simpleStorageSet(x) {
simpleStorage.setProvider(this.state.web3.curren
tProvider)
Declaro esto para más adelante, así que
13/16
podemos encadenar funciones en SimpleStorage.
var simpleStorageInstance
Consigue cuentas.
this.state.web3.eth.getAccounts((error,
cuentas) => {
simpleStorage.deployed().then(instance) => {
simpleStorageInstance = instancia
this.setState({
address: instance.address })
Almacenes a
dado valor, 5 por defecto.
devolución
simpleStorageInstance.set(x, {from:
cuentas[0]})
}).then((resulta) => {
Obtén el valor
del contrato para demostrar que funcionó.
devolución
simpleStorageInstance.get.call(accounts[0])
}).then((resulta) => {
Estado de actualización
con el resultado.
devolución
this.setState({ storageValue: result.c[0] })
})
})
}
render() {
regreso (
<div className="App">
< navegación
className="navbar menú puro-menú purohorizontal">
14/16
<a href="#" className="pure-menu-head-link">Trufa
Caja</a>
</nav>
<principal
claseNombre="contenedor">
<
NombreClase="puro-g">
<div className="pure-u-1-1">
<h1>¡Listo para empezar!</h1>
<p>Tu Trufa Box está instalada y lista.</p>
<h2>Ejemplo de contrato inteligente</h2>
<p>Si tus contratos se compilaron y migraron
Con éxito, a continuación se mostrará un valor almacenado de
5 (por defecto).</p>
<p>Prueba a cambiar el valor almacenado en <strong>línea
59</strong> de App.js.</p>
<p>El valor almacenado es:
{this.state.storageValue}</p>
<p>Dirección del contrato desplegado:
{este.dirección.estado}</p>
</div>
<div>
<tipo de entrada="número" onChange=
{this.changeValueHandle}/>
<botón onClick={this.setHandle}>set</button>
15/16
</div>
</div>
</main>
</div>
);
}
}
exportar aplicación por defecto
Se añadió la llamada del método de conjunto de contratos. Y muestra la dirección del contrato.
5. Abrir una nueva consola y ejecutar npm run start
6. Abre la http://lcoalhost:3000 en tu navegador para ver los resultados del contrato.
7. Establecer el valor del contrato almacenado Datos mediante las cajas de conjunto y entrada.
8. Entrar en el desarrollo de trufles
//将xxx替换为address
SimpleStorage.at('xxxx').then(res => {return
res.get()})
Se obtiene el valor de retorno del tipo BigNUmber, y el valor en el array c se establece
Datos almacenados.
Utiliza el plugin de navegador Metamask para interactuar con la blockchain
Referencia http://truffleframework.com/tutorials/pet-shop
Los participantes presentan documentos
El concurso especifica el uso de Truffle para desarrollar contratos inteligentes, siendo la versión v4.1.5 de Truffle correspondiente a la versión solcjs
v0.4.21. Los desarrolladores deben enviar el paquete zip del proyecto Truffle y los documentos de presentación relacionados, que incluyen, al menos,
Lo siguiente:
16/16
1. Estructura básica de archivos del proyecto Truffle: Prueba de migración de contratos de construcción
package.json truffle.js truffle-config.js README.md // Descripción de la documentación de ingeniería
No se requiere node_modules
2. Necesidad de proporcionar una explicación en PPT o PDF de todo el producto del proyecto, incluyendo la introducción del producto y su importancia,
Dirección de descarga de la app (opcional), introducción del proceso de uso del producto.
Los desarrolladores terceros posteriores podrán implementar aplicaciones contractuales y bolsas de cadena según el próximo documento de orientación de ThunderChain
Interacción.
Documentación y herramientas
API de solididad
Documentación de trufa
Ganache proporciona una interfaz gráfica para el entorno blockchain nativo
Zeppelin-Solidty está comprometida con un marco contractual seguro y estandarizado
MetaMask ofrece plugins para navegadores con un entorno blockchain mediante conexiones RPC
web3.js JS encapsulado en Ethereum para interactuar con la blockchain
Por último, el documento pdf para descargar:

Dev_Guide_zh.pdf (373.55 KB, Número de descargas: 6)
 Propietario| Publicado en 3/5/2018 16:01:58 |
Publicado en 8/5/2018 14:25:10 |
Aprendido, gracias
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com