Desarrollo y aprendizaje basado en Ethereum

1. Ethereum

Libro blanco de Ethereum

APLICAR ({Alice: $ 50, Bob: $ 50}, "enviar $ 70 de Alice a Bob") = ERROR

El "estado" en Bitcoin se refiere a la colección de todas las monedas que se han extraído pero que aún no se han gastado (técnicamente, "salida de transacciones no gastadas" o UTXO). Cada UTXO tiene una denominación y un propietario (por La definición de dirección de 20 bytes es esencialmente una clave pública cifrada fn.1). La transacción contiene una o más entradas, cada una de las cuales contiene una referencia a una UTXO existente y una firma criptográfica generada por la clave privada asociada con la dirección del propietario, y una o más salidas, cada una de las cuales contiene un nuevo estado de UTXO.

La función de transición de estado APLICAR (S, TX) -> S 'se puede definir aproximadamente de la siguiente manera:
1. Para cada entrada TX en:
si el UTXO referenciado no está en S, se devolverá un error.
Si la firma proporcionada no coincide con el propietario del UTXO, se devuelve un error.
2. Si la suma de las denominaciones de todas las UTXO de entrada es menor que la suma de las denominaciones de todas las UTXO de salida, se devolverá un error.
3. Vuelva a S'delete todos los UTXO de entrada y agregue todos los UTXO de salida.

2. Cuenta Ethereum

En Ethereum, el estado se compone de objetos llamados "cuentas", cada cuenta tiene una dirección de 20 bytes y las transiciones de estado son transferencias directas de valor e información entre cuentas. Una cuenta de Ethereum contiene cuatro campos: (En Ethereum, el estado se compone de objetos llamados "cuentas". Cada cuenta tiene una dirección de 20 bytes. La transición de estado es la transferencia directa de valor e información entre cuentas. Una cuenta Ethereum contiene cuatro campos :)

En el nonce , un contador Se utiliza para la composición del Seguro el cada transacción sólo puede procesarse Una vez
en el éter actual de la cuenta de balance
en The el de Cuenta Código de contrato , si está presente
en el de la cuenta de almacenamiento (vacío por defecto)
el contador de números aleatorios se utiliza para garantizar que cada transacción solo una vez Procese
el saldo actual de Ether de la
cuenta El código de contrato de la cuenta (si lo hubiera)
El espacio de almacenamiento de la cuenta (vacío de forma predeterminada)

Generalmente, hay dos tipos de cuentas: cuentas de propiedad externa controladas por claves privadas y cuentas de contrato controladas por sus códigos de contrato. Las cuentas de propiedad externa no tienen códigos, y los mensajes se pueden enviar desde cuentas de propiedad externa creando y firmando transacciones; en las cuentas de contrato, la cuenta de contrato activa su código cada vez que se recibe un mensaje, lo que le permite leer y escribir en el almacenamiento interno. enviar otros mensajes o crear contratos a su vez.

3. Noticias y transacciones

El término "transacción" utilizado en Ethereum se refiere a un paquete de datos firmado que se utiliza para almacenar mensajes que se enviarán desde una cuenta de propiedad externa. La transacción incluye:

  • Destinatario del mensaje
  • Identificar la firma del remitente
  • La cantidad de éter transferida del remitente al receptor.
  • Campo de datos opcional
  • Un valor STARTGAS, que indica el número máximo de pasos de cálculo permitidos para la ejecución de la transacción.
  • Un valor GASPRICE, que representa el costo que el remitente debe pagar por cada paso de cálculo.

Cuatro aplicaciones DApp descentralizadas

DApp es una especie de aplicación de "servidor" que se ejecuta en la red blockchain, similar a las aplicaciones que se ejecutan en dispositivos como Android / iOS y DApp que se ejecutan en la red Ethereum. Ethereum tiene un repositorio de código dapp-bin ( https://github.com/ethereum/dapp-bin ) en GitHub , que contiene algunos documentos y ejemplos. Antes de usarlo, debe observar el estado reciente de los archivos, ya que probablemente se hayan eliminado.

Cinco, navegador DApp

Un navegador DApp, como dice literalmente, se usa para facilitar el uso de clientes DApp (a menudo usando JS para interactuar con contratos inteligentes de Ethereum).

El propósito principal del navegador DApp es:

Proporciona una conexión a un nodo Ethereum (o un nodo local o un nodo remoto) y un conveniente cambio entre diferentes nodos (o incluso diferentes redes).

Proporcione una cuenta (o una billetera) para facilitar la interacción del usuario con DApp.

  1. Neblina

Mist ( https://github.com/ethereum/mist ) es el navegador DApp oficial de Ethereum. Una hermosa interfaz para interactuar con los nodos de Ethereum y enviar y recibir transacciones con contratos inteligentes.

  1. Estado

Status ( https://status.im/ ) es un navegador DApp que se puede utilizar en teléfonos móviles.

  1. MetaMask

MetaMask ( https://metamask.io/ ) es una extensión del navegador de Google que convierte Chrome en un navegador DApp. Su característica principal es inyectar la biblioteca cliente js web3 proporcionada por Ethereum en cada interfaz para permitir que DApp se conecte al servicio de nodo Ethereum proporcionado por MetaMask. Sin embargo, esta extensión de Chrome le permite administrar su billetera y conectarse a diferentes redes Ethereum (incluidas las redes de desarrollo local).

  1. Paridad

Parity es un cliente Ethereum (también una implementación de un nodo completo), integrado en el navegador web y lo convirtió en un navegador DApp.

En sexto lugar, la red Ethereum

Mainnet : la red principal de Ethereum , generalmente la red predeterminada para todos los clientes.

Ropsten : la principal red de prueba de Ethereum que utiliza prueba de trabajo. Esta red es vulnerable a ataques DDOS, fragmentación u otros problemas debido a la baja carga computacional. Se abandonó temporalmente después del ataque de spam y solo se reanudó su uso recientemente.

Enlace: https://github.com/ethereum/ropsten

La red de prueba compuesta por clientes de paridad Kovan utiliza certificados de autorización para mejorar la inmunidad a los ataques de spam, y el tiempo de bloqueo dura 4 segundos.

Enlace: https://github.com/kovan-testnet/proposal

La red de prueba compuesta por clientes de Rinkeby-geth utiliza consenso de grupo y, aunque la cantidad de cálculo es baja, es más resistente a los actores malintencionados.

Enlace: https://www.rinkeby.io/

Puede construir su propia red de prueba, tal vez usar
kubernetes ( https://github.com/MaximilianMeister/kuberneteth )

o

docker-composehttps://capgemini.github.io/blockchain/ethereum-docker-compose

Pero tal vez pronto puedas hacerlo sin perder tiempo.

Siete, trufa y embarque
Una vez que comience a escribir contratos inteligentes, repetirá muchas operaciones, como compilar el código fuente en bytecode y abi, implementarlo en la red, probar y luego implementar el contrato, etc. Es posible que desee concentrarse más en lo que desea lograr.

Los marcos Truffle y Embark estandarizan y automatizan estas tareas triviales. Proporcionan un buen desarrollo, implementación y, lo que es más importante, la experiencia de probar contratos inteligentes.

Puede comenzar el viaje de usar Truffle a través de la documentación oficial.

Puede consultar: Desarrollar la primera aplicación descentralizada basada en Ethereum-Pet Store.

Embark ( https://github.com/embark-framework/embark ) proporciona herramientas similares, ligeramente diferentes, que ayudan a los desarrolladores a organizar proyectos.

Cuando toca por primera vez el contrato inteligente, debe intentar no utilizar el marco. Hasta que comprenda el valor de usar un marco, debe comenzar a usarlo, al igual que no debe aprender HTML a través de rieles nuevos.

Ocho, ETHPM

Compartir es cuidar, por lo que ETHPM es una biblioteca de recursos de gestión de paquetes de contratos inteligentes descentralizada (https://www.ethpm.com/registry). Con ETHPM, puede asociarse o conectarse a un contrato o biblioteca bien conocido, reducir la duplicación de código y, idealmente, proporcionar una buena base para el desarrollo futuro.

La especificación aquí (https://github.com/ethereum/EIPs/issues/190) detalla la información relevante y los antecedentes. Tanto Truffle como Embark pueden integrarse con él y crear una experiencia de desarrollo agradable.

Supongo que te gusta

Origin blog.csdn.net/qq_42293496/article/details/103700376
Recomendado
Clasificación