Revisión de Integraión

Esta documentación también está disponible como un PDF.

Dash Core v0.13.x is a “fork” of Bitcoin and shares many common functionalities. Key differences relate to existing JSON-RPC commands which have been customized to support unique functionalities such as InstantSend.

  1. Información general: Dash es una “prueba de trabajo” y es similar a Bitcoin.
    1. Tiempo del Bloque: ~2.6 Minutos por Bloque
    2. Fuente de Github: https://github.com/dashpay/dash
    3. Última liberación: https://github.com/dashpay/dash/releases
  2. Interfaz JSON-RPC: La mayoría de los comandos JSON-RPC de Bitcoin no se modifican, lo que hace que la integración en los sistemas existentes sea relativamente sencilla. Para una lista completa de comandos RPC vea la Guía del Desarrollador.
  3. Algoritmo de Hasheo de Bloque: Dash utiliza el algoritmo «X11» en lugar del SHA256 usado en Bitcoin. Sin embargo, es importante tener en cuenta que esto solo afecta al hashing del Bloque en sí. Todos los demás componentes internos utilizan hash SHA256 (transacciones, raíz de merkle, etc) la cual permite a la mayoría de librerías existentes trabajar en el ecosistema Dash.
  4. Special Transactions: Dash Core v0.13.x introduces the concept of “Special Transactions”. Please see the Transaction Type Integration Guide for more information.

v0.13.0 Notas de Integración

Esta documentación también está disponible en un PDF.

Dash 0.13.0 implements DIP002 Special Transactions, which form a basis for new transaction types that provide on-chain metadata to assist various consensus mechanisms. The following special transaction types exist:

Lanzamiento Versión Tipo Tamaño del pago Pago JSON del pago Tipo de transacción
v0.13.0 3 0 n/d n/d n/d Transacción estándar
v0.13.0 3 1 <variable int> <hex> proRegTx Registro de nodos maestros
v0.13.0 3 2 <variable int> <hex> proUpServTx Actualiza el servicio del nodo maestro
v0.13.0 3 3 <variable int> <hex> proUpRegTx Actualizar el operador del nodo maestro
v0.13.0 3 4 <variable int> <hex> proUpRevTx Revocación de un nodo maestro
v0.13.0 3 5 <variable int> <hex> cbTx Masternode List Merkle Proof
v0.13.0 3 6 <variable int> <hex> qcTx Compromiso al Quorum

Notas de Instalación

  1. DIP002 Special Transactions are a foundational component of Dash Core v0.13.0 and introduce a new Transaction Version and related “Payload” to the network.
  2. Integrated Systems must be able to serialize and deserialize these new Transaction Types in order to accurately encode and decode Raw Transaction data.
  3. From a backwards compatibility perspective, the 4 byte (32-bit) version field included in Legacy Transactions has been split into two fields: version and type (each consisting of 2 bytes).
  4. Refer to the Special Transactions section of the dash developer reference for additional detail on these data types, e.g. <variable int>.
  5. InstantSend status and Payload JSON (e.g. proRegTx) is included in the JSON-RPC response, please note that this data is not part of the calculated hash and is provided for convenience.

See the v0.13.0 transaction types integration documentation (PDF) for worked examples of each transaction type.

Revisión de InstantSend

Esta documentación también está disponible como un PDF.

InstantSend is a feature provided by the Dash network that allows for zero-confirmation transactions to be safely accepted by Merchants and other service providers. All InstantSend Transactions are secured for 25 blocks by the “Masternode Network” at the moment of broadcast. The transaction is mined into the next block in accordance with standard blockchain principles.

InstantSend is enabled by the Masternode Network which comprises approximately 4,800 masternode servers. These nodes are differentiated from standard nodes by having proven ownership of 1,000 Dash. One responsibility that is appointed to this special type of server is to perform «Transaction Locking», also known as InstantSend.

Este concepto funciona como una extension de la red de consenso. Cuando una transacción «InstantSend» ocurre en la red esta a travez de validaciones extra procesa cual examinar en los siguientes dos propiedades de la transacción:

  1. Madurez de Ingreso: la red requerirá que todos los ingresos tengan por lo menos 6 confirmaciones.
  2. Composición de Ingreso: el número de ingresos en uso dicta las tarifas necesarias.
    1. 1 - 4 ingresos: tarifa por-kB es de 0.00001 DASH usando InstantSend Automático.
    2. 5+ ingresos: tarifa por ingreso es 0.0001 DASH es necesario.

Assuming the Input Maturity and Input Composition requirements are met, the network will «lock» the inputs related to this transaction for 25 blocks. Transactions carrying 4 or fewer inputs are referred to as a “simple transaction” and carry no extra fee.

InstantSend Automático

Dash Core v0.13.x introduce el proceso de InstantSend automática. Cualquier transacción la cual esta clasificado como una «transacción sencilla» que automáticamente será transmitida en la transacción de InstantSend cuando la transacción usando endpoints de transmisión para transacciones estándares.

InstantSend vs. Transacciones Estándar

The term “InstantSend” is used to describe a standard transaction that has been provided additional assurances by the Masternode Network. As a result, and from an integration perspective, there is no technical difference between the two types of transactions.

La diferencia mas notable relacionado para el camino de la política de confirmación esta aplicado dentro de los sistemas integrados. Los sistemas recibiendo debe estar consciente del estado de InstantSend en orden de aplicar de forma segura con confirmación de transacciones de políticas que están disponibles usando esta tecnología.

Recibir transacciones InstantSend

Recibiendo una transacción de InstantSend introduce dos requerimientos:

  1. La habilidad de determinar el “estado de InstantSend” de la transacción dada.
  2. La habilidad de ajustar “Estado de confirmación” independiente de confirmación de bloques.

El estado de InstantSend es típicamente determinado a través de conexiones directas con el servicio de dash. Notificaciones de ZMQ, o a través que usan el script de notificación de wallets externas.

Direct Connection: InstantSend Status can be identified through direct connection with the Dash daemon using JSON-RPC protocol. The “instantlock” attribute of the JSON response reflects the status of the transaction and is included in the following commands:

Notificación de wallet: Dash Core Daemon se puede configurar para ejecutar un script externo cuando una transacción de InstantSend relacionado a la wallet esta observando. Esta esta configurado para agregar las siguiente linea al archivo dash.conf:

instantsendnotify=/path/to/concurrent/safe/handler %s

Esto es usualmente usado con una wallet que ha sido llena de direcciones tipo solo vista.

Transmitir Transacciones InstantSend

InstantSend automatico introduce dos requerimientos en el sistema siendo integrado:

  1. La habilidad de evaluar el número de entradas en una transacción dada.
  2. La habilidad de pagar un caso de tarifas incrementadas en entradas mayores a 5.

In many cases an integrated system will already contain logic intended to keep transaction fees to a minimum by optimizing input usage. If this is true, and it can be assumed that only “simple transactions” are being formed, no additional development effort is required.

In cases where this is not possible or will be unknown, the integrated system should be able to calculate a fee based on the number of inputs being used to form the transaction. This per-input fee of 0.0001 DASH must be applied in order for the transaction to be successfully broadcast as an InstantSend. In these cases, it’s important to note that the “instantsend” flag must be set as “true” when issuing the sendrawtransaction command, e.g.:

sendrawtransaction "hexstring" false true

Recursos adicionales

Los siguientes recursos proporcionan información adicional sobre InstantSend y están destinados a ayudar a proporcionar una comprensión más completa de las tecnologías subyacentes.

Servicios API

Esta documentación también está disponible en un PDF.

Existen varios servicios API para facilitar la integración rápida y sencilla con la red Dash para servicios que incluyen:

  • Transmisión de transacciones
  • Tipo de cambio
  • Conversión de monedas
  • Generación de facturas

Los servicios de API generalmente se aprovechan para eliminar ese requisito de ejecutar tu propia infraestructura para admitir las interacciones de cadena de bloques. Esto incluye mecanismos tales como:

  • Formar y transmitir una transacción a la red.
  • Generación de direcciones usando Billeteras HD.
  • Procesamiento de pagos usando WebHooks.

Hay una variedad de opciones para respaldar estos métodos, con el diferenciador clave como el modelo de fijación de precios y las funciones compatibles. La siguiente lista de proveedores de API intenta delinear estas características/diferenciadores claves y también incluye un enlace a la documentación relacionada.

Insight

../_images/insight.png

https://github.com/dashevo/insight-api

El Insight REST API de software libre que te proporciona una forma conveniente, potente y sencilla de leer datos de la red de Dash y crear tus propios servicios con ella. Una guía practica para iniciar con el API de Insight y la interfaz del explorador de bloques de Insight esta disponible here.

BlockCypher

../_images/blockcypher.png

https://www.blockcypher.com

BlockCypher es un simple RESTful JSON API para interactuar con cadenas de bloques, que puede ser accedido a través de HTTP o HTTPS desde el dominio api.blockcypher.com.

BitGo

../_images/bitgo.png

https://www.bitgo.com

BitGo provee un API simple y robusto basado en RESTful y un SDK para el cliente que integra la wallet de divisa digital con la aplicación. Soporte para DASH InstantSend esta disponible.

  • Funcionalidades: Wallets Multi-Firma de disco, Operaciones de Wallet, Notificaciones WebSockets y WebHook, Soluciones custodiadas
  • Modelo de precio: Por llamada del API
  • Documentación: https://www.bitgo.com/api/v2/

ChainRider

../_images/chainrider.png

https://www.chainrider.io

ChainRider es un servicio en la nube que provee un conjunto de REST API para el manejo y exploración de monedas digitales

  • Características: Consultas a la Cadena de Bloques, Notificaciones de Eventos, Transmisión de Transacciones, Procesamiento de Pago, etc.
  • Modelo de Precios: Prueba gratis, pago por llamada de API
  • Documentación: https://www.chainrider.io/docs/dash

GoCoin

../_images/gocoin.png

https://gocoin.com

La plataforma GoCoin hace que tomar Dash sea tan fácil como instalar un complemento. El procesamiento de pagos ya está implementado para todas las principales plataformas de compras. GoCoin se centra en ayudar a los comerciantes en nichos relacionados con la privacidad e industrias específicas, y maneja todos los riesgos de transacción para todos los pagos de tus clientes.

  • Características: Facturación, Tipos de cambio, Retorno de llamadas de WebHook. GoCoin posee llaves privadas en su servidor, lo que permite al comerciante retirar fondos en criptomonedas o convertir a Fiat.
  • Integraciones: WooCommerce, Magento, Prestashop, VirtueMart, ZenCart, OpenCart, OSCommerce, UberCart, nopCommerce, WHMCS, NATS4, Shopify.
  • Modelo de precios: 1% comisión de procesamiento (https://gocoin.com/fees)
  • Documentación: https://gocoin.com/docs

CoinPayments

../_images/coinpayments.png

https://www.coinpayments.net

CoinPayments es una pasarela de pago integrada para las criptomonedas, como Dash. Los complementos del carrito de compras están disponibles para todos los webcarts populares que se usan hoy en día. CoinPayments puede ayudarte a configurar un nuevo sistema de pagos o integrarse con tu sistema de pago preexistente.

  • Características: Facturación, Tipos de cambio, Retorno de llamadas de WebHook. CoinPayments tiene llaves privadas en su servidor, lo que permite al comerciante retirar fondos en criptomonedas o convertir a Fiat.
  • Integraciones: aMember Pro, Arastta, Blesta, BoxBilling, Drupal, Ecwid, Hikashop, Magento, OpenCart, OSCommerce, PrestaShop, Tomato Cart, WooCommerce, Ubercart, XCart, ZenCart
  • Modelo de precios: 0.5% comisión de preocesamiento (https://www.coinpayments.net/help-fees)
  • Documentación: https://www.coinpayments.net/apidoc

Recursos SDK

Esta documentación también está disponible en un PDF.

SDKs (Software Development Kits) are used to accelerate the design and development of a product for the Dash Network. These resources can either be used to interface with an API provider or for the creation of standalone applications by forming transactions and/or performing various wallet functions.

Guía de desarrollador de Dash

../_images/dash-logo.png

https://dash-docs.github.io/en/developer-guide

La Guía de desarrollador de Dash tiene como objetivo proporcionar la información que se necesita para comprender Dash y comenzar a crear aplicaciones basadas en Dash. Para hacer el mejor uso de esta documentación, es mejor que instales la versión actual de Dash Core, ya sea desde el origen o desde un ejecutable precompilado.

NodeJS/JavaScript: Dashcore

../_images/bitcore.png

https://bitcore.io

Dashcore en una bifurcación de Bitcore y opera como un nodo completo de Dash - tus aplicaciones corren directamente en la red punto-a-punto. Para el desarrollo de aplicaciones de billeteras, indices adicionales deben ser agregados en Dash para consultar balance de direcciones, histico de transacciones, y salidas sin gastar.

PHP: Bitcoin-PHP

https://github.com/snogcel/bitcoin-php

Bitcoin-PHP es una implementación de Bitcoin con soporte para Dash usando mayormente puro PHP.

Python: PyCoin

https://github.com/DeltaEngine/pycoin

PyCoin es una implementación de un montón de utilidades que pueden ser útiles cuando se trata de Bitcoin y Dash. Ha sido probado con Python 2.7, 3.6 y 3.7

Java: DashJ

../_images/bitcoinj.png

https://github.com/HashEngineering/dashj

DashJ es una librería para trabajar con el protocolo Dash. Puede mantener una billetera, enviar/recibir transacciones (incluye InstantSend) sin necesidad de una copia local de Dash Core, y tiene muchas otras características avanzadas. Esta implementado en Java pero puede ser usado desde cualquier

Objective-C: Dash-Sync

../_images/dash-logo.png

https://github.com/dashevo/dashsync-iOS

Dash-Sync es un framework de blockchain hecho en Objective-C para iOS. Este implementa las mejoras mas relevantes de Propuestas de mejoras de Bitcoin (BIPs) y Propuestas de Mejoras de Dash (DIPs).

.NET: NBitcoin

../_images/dash-logo.png

https://github.com/MetacoSA/NBitcoin

NBitcoin es la biblioteca más completa de Bitcoin para la plataforma .NET, y se ha modificado para incluir soporte para Dash. Implementa todas las propuestas de mejora más relevantes para Bitcoin (PIF) y para Dash (DIP). También proporciona acceso de bajo nivel a los primitivos de Dash para que puedas construir fácilmente tu aplicación sobre ella.

BlockCypher

../_images/blockcypher.png

https://www.blockcypher.com

BlockCypher también ofrece clientes SDK.

GoCoin

../_images/gocoin.png

https://gocoin.com

Maquina expendedora

El miembro de la moocowmoo ha liberado codigo para ayudar a los comercios a contruir su propia mauina expendedora y configurarla para recibir pagos de InstantSend de Dash. El software Dashvend tambien puede ser utilizado para crear cualquir tipo de sistema de pago, incluyendo sistemas de punto de venta, que puedan aceptar pagos con InstantSend.

Precio de tickers

Puedes agregar un widget de ticket de precio simple a tu sitio web usando el simple generador de fragmentos de código de CoinGecko.

Widgets similares con diferentes diseños estan disponibles en CoinLib, WorldCoinIndex y Cryptonator, mientras una API que provee información similar esta disponible en DashCentral.

Códigos R

Muchas billeteras son capaces de generar codigos QR los cuales pueden ser escaneados para simplificar la entrada de la dirección Dash. Imprimiendo estos codigos o publicandolos en su pagina web se hace mas facil recibir pagos y propinas en Dash, tanto en linea como fuera de linea.

  • En la Dash Core, vaya a la pestaña Recibir, genere una dirección si es necesario y haga doble clic para mostrar un codigo QR. Haga clic derecho en el codigo QR y seleccione Guardar Imagen para guardar en un archivo PNG.
  • En Dash para Android, toque Solicitar Monedas luego toque el codigo QR para mostrar la imagen mas grande. Puede hacer captura de pantalla para guardar una imagen.
  • En Dash para iOS, deslice a la izquierda para mostrar la pantalla Recibir Dash. Un codigo QR y dirección aparecera. Puedes hacer una captura de pantalla para guardar una imagen.
  • Para generar un código QR de cualquier dirección, visita CWA QR Code Generator y simplemente pegue su dirección Dash para generar una imagen.