¿Cómo envío SendRawTransaction con hash de documento? [cerrado]

Soy un novato total en blockchain y acabo de empezar hace una semana. Ya he implementado una cadena de bloques de Ethereum privada y quiero usarla para garantizar la integridad del documento, lo que significa que almacenaré sumas de verificación MD5 en la cadena de bloques para verificarlas en un momento posterior.

Ahora entiendo que una cadena de bloques no es para almacenar datos y uno debe usar OP_RETURN para almacenar dicha información si lo desea. Esto me lleva a mi pregunta, es decir, ¿cómo creo una transacción de este tipo y le agrego el hash del documento en OP_RETURN usando:

  1. Un objeto web3.eth
  2. Nethereum

Cualquier y toda ayuda será apreciada.

Estoy votando para cerrar esta pregunta como fuera de tema porque solo debe hacer preguntas prácticas y respondibles basadas en problemas reales que enfrenta. Las preguntas conversacionales y abiertas disminuyen la utilidad de nuestro sitio y eliminan otras preguntas de la página principal. Y Reddit podría ser un buen lugar para preguntas conversacionales.
@niksmac ¿Desde cuándo un cuestionamiento que comienza con "¿Cómo puedo..." se llama pregunta habladora? Apreciaría si pudiera indicarme un recurso donde se mencione la declaración para crear dicha transacción.
Esta es más una pregunta orientada al diseño de arquitectura, al igual que cómo usar promisesen javascript. Buena edición allí ethereum.stackexchange.com/posts/12672/revisions
@niksmac Bueno, tu comentario aún no responde a mi pregunta. ¿Cómo se escribe una transacción de este tipo utilizando web3.eth o Nethereum?
¡Bienvenido a la comunidad! ethereum.stackexchange.com/questions/1547/… puede ayudar y consulte también ethereum.stackexchange.com/help
@Syed ¿Qué es esto OP_RETURN? @eth gracias por la actualización.
OP_RETURNes del mundo de Bitcoin: esto no es una cosa de Ethereum... (Podrías copiar su funcionalidad usando un contrato, pero esa es probablemente una pregunta completamente diferente).

Respuestas (3)

En ethereum no hay códigos de operación de secuencias de comandos, por lo que no hay op_return (como en Bitcoin). Sin embargo, puede almacenar datos de manera similar usando:

eth.sendTransaction({from:eth.accounts[0],to:eth.accounts[1],value:web3.toWei(1‌​00,'finney'),data:web3.toHex('My Message')})
gracias, esto fue útil. Pude agregar los datos de esta manera y ahora probaré el enfoque de Mikko. ¿Es seguro decir que la mejor manera de hacer esto sería usar el enfoque de contrato inteligente de Mikko a continuación?
no se trata de seguridad, sino de cómo pretende diseñar su aplicación si desea utilizar un contrato inteligente, de lo contrario, utilícelo, simplemente envíe transacciones que contengan su hash. tienes la opción

Los contratos inteligentes pueden almacenar cualquier dato, incluidos los hashes de documentos

contract MyHashRegistry {

    mapping (uint => uint) hashes:

    function storeHash(uint documentId, uint hash) {
        hashes[documentId] = hash;
    }
}

Parece que aún no tiene experiencia relevante en Ethereum para construir sus propias cosas, por lo que llegar a una conclusión en lugar de comprender todos los pasos intermedios es un problema aquí. Sugiero tomar un camino de aprendizaje. Necesitas

  • Aprenda el lenguaje de programación Solidity

  • Crear un contrato inteligente

  • Aprenda a interactuar con contratos inteligentes desde su computadora (web3.js, web3.py)

gracias, pude agregar la transacción de la forma prescrita por Badr anteriormente, pero creo que los contratos inteligentes serían la forma correcta de hacerlo. Seguirá el camino de aprendizaje que sugirió.

Pensé que podría ser útil agregar el código aquí para publicar la transacción usando Nethereum:

var txCount = await web3.Eth.Transactions.GetTransactionCount.SendRequestAsync(senderAddress);
var encoded = web3.OfflineTransactionSigning.SignTransaction(myPrivateKey, receiverAddress, 
                amount: 0, 
                nonce: txCount.Value, 
                gasPrice: 1,
                gasLimit: 100000,
                data: myHexData);

txId = await web3.Eth.Transactions.SendRawTransaction.SendRequestAsync(encoded);