
Obyte es una plataforma criptográfica abierta que utiliza un gráfico acíclico dirigido (DAG, gráfico dirigido sin ciclos) como un registro de transacciones en lugar de una cadena de bloques, con acceso gratuito e igualitario al registro para todos los participantes. DAG, a diferencia de la cadena de bloques habitual para todos, permite enviar datos a un registro distribuido directamente sin la participación de los mineros debido al rechazo de los bloques y al estricto orden de las transacciones. En comparación con blockchains, la arquitectura DAG no necesita clases privilegiadas de usuarios, como mineros, falsificadores o productores de bloques, por lo que no hay intermediarios entre el usuario y el registro en la red, y todos tienen acceso igual y directo para agregar transacciones al registro.
En este artículo, me gustaría hablar sobre Obyte, agentes autónomos y comparar todo esto con Ethereum.
¿Qué son los agentes autónomos?
Este es un programa cuyo código fuente se almacena en el registro (DAG) y tiene su propia dirección, similar a las direcciones de cualquier otro participante de la red. El programa describe las acciones que se realizarán en respuesta al envío de monedas y datos a esta dirección. Si está familiarizado con los contratos inteligentes de Ethereum, los agentes autónomos tienen un significado muy cercano a ellos.
Un ejemplo de la vida es una máquina expendedora. En respuesta al número de producto escrito en el teclado e ingresando la cantidad, el dispositivo le entrega al usuario el producto en sí. Hay una diferencia importante entre AA y las máquinas expendedoras: las máquinas expendedoras están controladas por sus propietarios, y los usuarios solo esperan que las acciones del dispositivo coincidan con las expectativas del usuario. Los agentes autónomos son verdaderamente autónomos: todo el programa se almacena en el DAG, su código fuente es visible para todos los participantes de la red, no se puede cambiar, deshabilitar ni eliminar.
Por ejemplo, puede programar AA para intercambiar tokens. Para la programación, el lenguaje desarrollado para estas tareas es Oscript.
Obyte también tiene el concepto de contratos inteligentes, pero no son lo mismo que los contratos inteligentes de AA o Ethereum. La principal diferencia entre los contratos inteligentes de AA y Obyte es que los contratos inteligentes, como los contratos regulares en el mundo real, operan entre dos participantes y dicen en qué condiciones se puede ejecutar un contrato. En pocas palabras, un conjunto de condiciones que permiten o prohíben una transacción. Al mismo tiempo, un agente autónomo es un participante programado independiente que interactúa con el cual iniciamos su respuesta (nuevas transacciones, etc.).
La ejecución del código AA comienza después de que la transacción desencadenante se haya estabilizado (es decir, hubo consenso sobre la transacción y el doble gasto definitivamente está ausente). Cada nodo completo ejecutará el código AA en su copia del registro y registrará el resultado de la ejecución solo en su base de datos. No es necesario transmitir el resultado de la ejecución a otros nodos, porque El estado de todos los participantes en la red es el mismo y el resultado de la ejecución también es determinista y el mismo para todos. El estado final del registro está determinado solo por las reglas de ejecución de AA, y no está controlado por mineros, ni votantes, ni por nadie más.
¿Por qué son necesarios?
AA permite en modo descentralizado crear cosas como
- opciones
- contratos de futuros
- monedas algorítmicamente estables
- activos sintéticos
- otros derivados
- préstamos de seguridad
- margen comercial
- intercambios descentralizados
- oráculos descentralizados
- canales de pago
- juegos economicos
- creadores de mercado
- gestión automática de cartera de inversiones
Y mucho mas ...
Transparencia del usuario
Obyte desde el primer día de existencia brinda la oportunidad de concluir un contrato inteligente entre personas de una forma comprensible para los humanos. La transparencia y la facilidad de percepción de los usuarios han sido y siguen siendo uno de los principios principales en la creación de la plataforma.
A pesar de que Oscript es un lenguaje de programación, y fue creado para la percepción de la máquina y los programadores, y no para la gente común, tratamos de no apartarnos de nuestros principios. Por lo tanto, para las personas que no están familiarizadas con la programación, una billetera GUI intentará interpretar el código AA antes de realizar una transacción y mostrarle a la persona el resultado de una manera que comprenda:

Oscript: lenguaje de agente independiente
Los desarrolladores familiarizados con cualquier lenguaje tipo C no tendrán dificultades para trabajar con AA.
Primero, me gustaría distinguir las características.
AA solo funciona en la activación de transacciones. Puede ser solo pago o transferencia de datos AA. Por ejemplo, pasa los datos
{foo: 'bar', valor: 100} y AA los recibirá como
entrada , y en base a esto, se realizan las acciones.
A qué AA tiene acceso
- a cualquier variable que describa el estado actual del DAG
- Cantidades recibidas en la transacción desencadenante
- datos del activador de transacción
- quien envió la transacción desencadenante
- variables de estado de nuestro y otros AA
- acceso a diversos datos públicos del DAG, como datos_alimentación de oráculos, certificaciones de nombres reales, etc.
- saldos de nuestro y otros AA
- información de activos
Características de Oscript
Oscript - NO Turing el lenguaje completo, sin embargo, en su arsenal hay:
- operaciones aritméticas
- operaciones lógicas (y, o, etc.)
- comparaciones
- concatenación de cuerdas
- algunas funciones matemáticas
- funciones criptográficas (creación de hash, verificación de firma)
- ramificación (si / si no)
- sin bucles y funciones (para evitar recursiones infinitas). Puede encontrar más información en el manual en este enlace
Para controlar el uso de recursos y prevenir escenarios maliciosos, los AA están limitados a un máximo de 100 operaciones que requieren mucha mano de obra, como funciones de cifrado o accesos a bases de datos. La verificación se produce en el momento de la implementación del código del Agente.
Pero no hay fórmulas complicadas para calcular el costo del rendimiento de AA. No existen tales fórmulas en absoluto, la ejecución del código es gratuita, los usuarios, como AA, solo pagan por agregar datos al registro DAG, como cualquier otro miembro de la red: 1 byte en moneda Obyte por cada byte de datos agregado al DAG. Sin embargo, AA debe mantener su saldo en bytes no menos que el tamaño de todas las variables de estado que almacena.
Si, en la ejecución, AA activa la ejecución de otro AA, primero se registrará en el registro la transacción resultante del primer AA, y solo entonces comenzará a ejecutarse el siguiente AA.
Agentes autónomos en acción
Ahora escribiremos el script de ping-pong más simple. Enviamos dinero de AA, él deja algo para sí mismo y devuelve el resto. Resolveremos el mismo problema en dos plataformas:
Obyte y
Ethereum, y compararemos. En Ethereum, las entidades AA similares se conocen comúnmente como contratos inteligentes (aunque el libro blanco de Ethereum los llama agentes autónomos una vez).
Ethereum
Haré todo a través de
geth. Ejecute el nodo en modo
ligero y espere la sincronización.
geth --testnet --ws --wsapi "admin,db,eth,net,web3,personal" --syncmode "light" --allow-insecure-unlock
Ahora tenemos dos opciones para el desarrollo de eventos:
- espere hasta que se detecten los pares y comience la sincronización
- agregar pares manualmente
Elegí la segunda opción. Y
rfikki y su
lista de comandos ya
listos vienen al
rescate . Estamos conectados al nodo y agregamos pares:
geth attach ws://127.0.0.1:8546 admin.addPeer("enode://bc827e035cf3a42c249374be7ddc9c2fb819765c440116cf01aa6a8d70d03043d29ccd42b32a283f5ab08294467eb3b92fc40111e9af1770c84bc116edae89c0@104.248.199.52:30303"); admin.addPeer("enode://2d86877fbb2fcc3c27a4fa14fa8c5041ba711ce9682c38a95786c4c948f8e0420c7676316a18fc742154aa1df79cfaf6c59536bd61a9e63c6cc4b0e0b7ef7ec4@13.83.92.81:30303"); admin.addPeer("enode://053d2f57829e5785d10697fa6c5333e4d98cc564dbadd87805fd4fedeb09cbcb642306e3a73bd4191b27f821fb442fcf964317d6a520b29651e7dd09d1beb0ec@79.98.29.154:30303"); admin.addPeer("enode://690c93ac2f6e6f711a175cc6a73a3cf3b649eea83c458ce34364c69d1b557bb408693f06bdf6fc31538a744d5c231fdd904cce5665d04ce165032c0fc009a208@104.248.199.160:30303");
Después de eso, comenzará el proceso de sincronización y, para no perder tiempo, cree una cuenta. Para hacer esto, escribiremos los siguientes comandos en nuestra conexión y estableceremos la contraseña:
personal.newAccount();
En la consola veremos la dirección, cópiala y ve a
faucet . Pegue en el campo y haga clic en enviar.
Ahora verifique la sincronización:
eth.syncing
Y verifique el saldo:
eth.getBalance(eth.accounts[0])
La preparación se ha completado y ahora podemos pasar a escribir y publicar el contrato.
Cree un archivo, por ejemplo pingPong.sol y escriba nuestro contrato en él:
pragma solidity ^0.5.10; contract PingPong{ function deposit() payable public { msg.sender.transfer(msg.value - 20000); } function getBalance() public view returns(uint256){ return address(this).balance; } }
En este contrato, creamos dos funciones públicas:
depósito - llame por reposición y devolución menos 20,000.
getBalance : solo nos muestra el saldo de la dirección del contrato.
A continuación, tenemos que compilarlo, para esto utilizo el
módulo npm solc :
solcjs -o . --bin --abi pingPong.sol
Ahora prepare los archivos compilados para su descarga rápida en el cliente
geth . Cambiar el archivo
abi para mirar
var pingPongContract = eth.contract([{"constant":true,"inputs":[],"name":"getBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"deposit","outputs":[],"payable":true,"stateMutability":"payable","type":"function"}]);
Y
bin para ver
personal.unlockAccount(eth.accounts[0]) var pingPong = pingPongContract.new( { from: eth.accounts[0], data: "", gas: 500000});
Vaya al cliente
geth y conecte estos scripts
loadScript('sol2/pingPong_sol_PingPong.abi') loadScript('sol2/pingPong_sol_PingPong.bin')
Donde
sol2 es la ruta a su carpeta de script. Después de ejecutar el segundo script, le pedirá que desbloquee su cuenta. Listo
A continuación, escriba `pingPong`. Si, como resultado, ve que la dirección no está vacía, si no se ha publicado el contrato, debe esperar un poco e intentar nuevamente.
Después de eso, ejecutaremos la función de
depósito , enviaremos el dinero y verificaremos cómo fue todo.
personal.unlockAccount(eth.accounts[0]) pingPong.deposit({from: eth.accounts[0], value: 500000});
En la salida, podemos ver la identificación de la transacción. Cópielo, lo necesitaremos más tarde. Antes de esto, llamamos a la función
getBalance y vemos allí 20,000, que restamos.
pingPong.getBalance()
Ahora pasemos a etherscan. Allí, verá en "Transacciones internas" un pago de devolución de 48,000. Resultó así:
https://ropsten.etherscan.io/tx/0xc3fab9f39f2ec32eadffc54608a61c3c77c4ac0f3630037b5c312d3b66ee85f8#internalObbyte
Para su publicación utilizaremos el
editor OscriptLimpia la plantilla que nos ofrece. Escribiremos desde cero. Mínimo AA es un objeto con una variedad de mensajes.
{ messages: [] }
Como enviaremos el pago, debemos agregar un objeto con las propiedades que lo indiquen a los mensajes:
{ messages: [ { app: 'payment', payload: { asset: 'base', outputs: [ {address: "{trigger.address}", amount: "{trigger.output[[asset=base]] - 20000}"} ] } } ] }
Aquí vemos los metadatos estándar para el pago. Se cambian usando "{}" en las líneas. El objeto
desencadenante se utiliza para transferir valores; almacena información sobre el pago recibido. Puede obtener más información sobre la sintaxis
en la documentación .
Pegamos este código en el editor y luego hacemos clic en Implementar.
Eso es todo!AA publicado y a continuación vemos la dirección. Ahora necesitamos una
billetera GUI testnet , instálala y
ejecútala . Luego, para obtener algunas monedas de prueba, vaya al “chat”, seleccione “Bot Store” y agregue “Faucet Bot” allí. Se abrirá nuestro chat, haga clic en el menú de la izquierda y seleccione "Insertar mi dirección"

Luego enviamos y esperamos el mensaje de que nos llegó el dinero: "Pago: ...". A continuación, debemos ir a la principal y esperar hasta que desaparezca la inscripción "Incluyendo confirmación pendiente" (unos minutos), esto significa que las monedas recibidas se confirman y se pueden usar.
Todo lo que nos queda es ir a “recibir”, insertar la dirección AA, ingresar la cantidad “500000” y presionar “enviar”. Ahora tenemos que esperar hasta que la transacción se estabilice (verificando el historial). Esto es necesario para desencadenar. Verificaremos si nos devolvieron el dinero:

Eso es todo, funciona. Al ir al explorador
de AA, podemos ver que su saldo ha aumentado en 20,000 menos la tarifa por pagarnos. En Obyte, los propios agentes autónomos pagan una comisión por las acciones que realizan.
Conclusiones
Como podemos ver en la comparación anterior, Obyte es mucho más fácil de publicar, escribir y controlar lo que sucede. Por ejemplo, en Ethereum está lejos de ser siempre que podamos seleccionar correctamente el gas de una transacción saliente, por lo que puede confirmarse durante mucho tiempo. Entre las ventajas de Ethereum, se puede destacar su rápida publicación y confirmación (aproximadamente un minuto, dependiendo del gas suministrado). Mientras que en Obyte, la publicación se lleva a cabo de inmediato, y el tiempo de confirmación depende de la carga de la red, con una carga ligera, aproximadamente 10-15 minutos, con una carga grande, menos de tres minutos.
En los siguientes artículos, analizaremos algunos ejemplos interesantes y animados, por ejemplo, cómo implementar DAO simple usando AA y responder sus preguntas.
Competencia
En relación con la innovación, invitamos a los desarrolladores a unirse a la competencia por la aplicación más interesante e impresionante de Agentes Autónomos. La competencia ya está en curso y durará hasta mediados de octubre. Como ejemplos de solicitudes ya recibidas, hay varios AA de crowdfunding, dos intercambios, varios "registros" y rastreadores de reputación, loterías, juegos, etc. Cada dos semanas, un jurado del equipo de Obyte anuncia las mejores entradas.
El presupuesto total del concurso es de
$ 38,000 (a la tasa de
GB al momento del lanzamiento).
Puedes leer más sobre la competencia
en este artículo .