Как отправить транзакцию SendRawTransaction с хэшем документа? [закрыто]

Я абсолютный новичок в блокчейне и только начал с него неделю назад. Я уже развернул частную цепочку блоков Ethereum и хочу использовать ее для обеспечения целостности документов, что означает, что я буду хранить контрольные суммы MD5 в цепочке блоков для проверки в более поздний момент времени.

Теперь я понимаю, что блокчейн не для хранения данных и при желании можно использовать OP_RETURN для хранения такой информации. Это подводит меня к моему вопросу, т.е. как мне создать такую ​​транзакцию и добавить к ней хэш документа в OP_RETURN, используя:

  1. Объект web3.eth _
  2. Нетериум

Любая помощь будет оценена по достоинству.

Я голосую за то, чтобы закрыть этот вопрос как не по теме, потому что вы должны задавать только практические вопросы, на которые можно ответить, основанные на реальных проблемах, с которыми вы сталкиваетесь. Болтливые открытые вопросы снижают полезность нашего сайта и вытесняют другие вопросы с первой страницы. И Reddit может быть хорошим местом для болтливых вопросов.
@niksmac С каких это пор вопросы, начинающиеся с «Как мне…», стали называть болтливыми? Я был бы признателен, если бы вы действительно указали мне на ресурс, где упоминается инструкция для создания такой транзакции.
Это больше вопрос, ориентированный на дизайн архитектуры, точно так же, как использовать promisesв javascript. Хорошее редактирование там ethereum.stackexchange.com/posts/12672/revisions
@niksmac Ну, ваш комментарий все еще не отвечает на мой вопрос. Как пишется такая транзакция с помощью web3.eth или Nethereum?
Добро пожаловать в сообщество! ethereum.stackexchange.com/questions/1547/… может помочь, также проверьте ethereum.stackexchange.com/help
@Сайед Что это OP_RETURN? @eth спасибо за обновление.
OP_RETURNиз мира биткойнов - это не вещь Ethereum... (Вы можете скопировать его функциональность, используя контракт, но это, вероятно, совсем другой вопрос.)
Ха, на самом деле: ethereum.stackexchange.com/questions/1547/…

Ответы (3)

В Эфириуме нет кодов операций скрипта, поэтому нет op_return (как в Биткойне). Однако вы можете хранить данные аналогичным образом, используя:

eth.sendTransaction({from:eth.accounts[0],to:eth.accounts[1],value:web3.toWei(1‌​00,'finney'),data:web3.toHex('My Message')})
спасибо, это было полезно. Мне удалось добавить данные таким образом, и теперь я попробую подход Микко. Можно ли с уверенностью сказать, что лучший способ сделать это — использовать смарт-контракт Mikko, описанный ниже?
речь идет не о безопасности, а о том, как вы собираетесь разрабатывать свое приложение, если хотите использовать смарт-контракт, поэтому используйте его, в противном случае просто отправляйте транзакции, содержащие ваш хэш. у тебя есть выбор

Смарт-контракты могут хранить любые данные, в том числе хэши документов

contract MyHashRegistry {

    mapping (uint => uint) hashes:

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

Кажется, что у вас еще нет соответствующего опыта работы с Ethereum, чтобы создавать свои собственные вещи, поэтому здесь проблема заключается в том, чтобы делать поспешные выводы вместо того, чтобы понимать все промежуточные шаги. Я предлагаю пойти по пути обучения. Тебе следует

  • Изучите язык программирования Solidity

  • Создайте смарт-контракт

  • Узнайте, как взаимодействовать со смарт-контрактами с вашего компьютера (web3.js, web3.py)

спасибо, я смог добавить транзакцию способом, описанным Бадром выше, но я считаю, что смарт-контракты были бы правильным способом сделать это. Буду следовать пути обучения, который вы предложили.

Подумал, что было бы полезно добавить сюда код для публикации транзакции с использованием 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);