¿Cómo puedo enviar un mensaje a otra dirección de Ethereum? ¿Y cómo sabría ese usuario que recibe que es un mensaje? ¿Hay una billetera Ethereum que muestre que envié un mensaje a esa dirección? ¿Y cuál es el tamaño máximo que puedo enviar?
Por lo tanto, solo es posible enviar datos HEX en el data
campo. Esta no será una transacción estándar, pero requerirá que use geth, la configuración avanzada de MyCrypto en la página de envío u otro cliente que le permita acceder y editar el data
campo.
Google y visite un sitio ascii->hex y escriba su mensaje.
Copie la salida hexadecimal y elimine todos los espacios en esa salida hexadecimal. Luego pégalo en el data
campo.
En etherscan, puede hacer clic en "convertir a ascii" en la parte inferior de cualquier TX que tenga datos. Sin embargo, no todos los datos son datos ascii, por lo que a veces será un galimatías.
Envié una demostración aquí . En "carga útil", puede ver los datos HEX a la izquierda y ASCII a la derecha.
Como señaló euro10 en los comentarios (pero es un poco difícil de leer), en realidad puede usar ascii incorporado -> hex si está usando geth:
eth.sendTransaction({from:eth.accounts[0],to:eth.accounts[1],value:web3.toWei(100,'finney'),data:web3.toHex('John Doe sent you a message')})
Al enviar un mensaje, supongo que quiere decir que desea enviar algún tipo de mensaje de texto a otro usuario...
Y una alternativa al enfoque anterior es utilizar un contrato para publicar un evento en la cadena de bloques. Luego, un cliente puede volver a escuchar estos eventos específicos utilizando la API web3.js.
Así es como lo haría con la API web3.
const Utils = require('web3-utils');
let txTransfer = {};
txTransfer.from = from.address;
txTransfer.to = to.address;
txTransfer.gas = GasLimit;
txTransfer.value = amount;
txTransfer.data = Utils.toHex('free text data');
web3.eth.sendTransaction(txTransfer);
Tengo un ejemplo de trabajo en blockchain en esta transacción 0x99f537b788c1e0c9513735c644921ffa423f8bd20ce45165403e8f12942aaca8 . Los datos ASCII en la transacción eran el mismo JavaScript que se usó para enviar la transacción.
web3js v1.xx
const txParams = {
nonce: nonce,
gasPrice: gasPrice,
gasLimit: gasLimit,
to: to,
value: value,
data : web3.utils.toHex('rockstar blockchain developer'),
// EIP 155 chainId - mainnet: 1, ropsten: 3
chainId: 4
}
const tx = new ethereumTx(txParams);
tx.sign(privateKey);
const serializedTx = '0x'+tx.serialize().toString('hex')
console.log("serializedTx" ,serializedTx );
web3.eth.sendSignedTransaction(serializedTx);
Hash Tx de ejemplo exitoso en rinkeBy test net 0xbc5ef9dc8da24c90d5910d93419f9746f3fe318cb2f2b5e7c873e64264bfcf53
sendSignedTransaction
en lugar de solo sendTransaction
? ¿Qué beneficios tiene el firmado?Usas Whisper
( https://github.com/ethereum/go-ethereum/wiki/Whisper )
Web3.py
:He seguido el siguiente código de modo ssh .
receiver.py
que se ejecuta en el nodo-1:
from web3 import Web3, HTTPProvider
web3 = Web3(HTTPProvider('http://localhost:8545'))
from web3.shh import Shh
Shh.attach(web3, "shh")
import time, sys;
from hexbytes import (
HexBytes,
)
kId = web3.shh.newKeyPair()
receiver_pub = web3.shh.getPublicKey(kId)
print('receiverPubK: ' + receiver_pub);
topic = '0x07678231'
shh_filter = web3.shh.newMessageFilter({
'privateKeyID': kId,
'topics': [topic]
})
input("Press Enter to continue...");
received_messages = [];
received_messages = shh_filter.get_new_entries()
print(len(received_messages)) # Returns '0'
print(web3.shh.info.memory) # Returns '0'
Producción:
receiverPubK: 0x04226d96bf9857ac0ba429c1e8b480a2811ce47cb526dbd3829d7586e5cae740198ba291f3eca0f279f82db8a136be90ea9ec629ed6cd1d45cc7f873159811757d
Press Enter to continue...
Después Node_1
de enviar los mensajes; He copiado impreso receiverPublicKey
en receiver_pub
variable en el siguiente código. Ejecuto el siguiente código en Node 2
. Node 2
envía un mensaje a la red. Luego presiono enter en Node_1
e Node_1
imprime el mensaje
from web3 import Web3, HTTPProvider
web3 = Web3(HTTPProvider('http://localhost:8545'))
from web3.shh import Shh
Shh.attach(web3, "shh")
import time, sys;
from hexbytes import (
HexBytes,
)
receiver_pub='0x04226d96bf9857ac0ba429c1e8b480a2811ce47cb526dbd3829d7586e5cae740198ba291f3eca0f279f82db8a136be90ea9ec629ed6cd1'; # obtained from node_1 and assigned here.
topic = '0x07678231'
payloads = [web3.toHex(text="test message :)"), web3.toHex(text="2nd test message")]
web3.shh.post({
'powTarget': 2.5,
'powTime': 2,
'ttl': 60,
'payload': payloads[0],
'topic': topic,
'pubKey': receiver_pub
})
eur10
eth.sendTransaction({from:eth.accounts[0],to:eth.accounts[1],value:web3.toWei(100,'finney'),data:web3.toHex('John Doe sent you a message')})
puede ver aquí etherchain.org/tx/…thomas jay prisa
Ilya Loskutov
Stepan Yakovenko
Pratik Gaikwad
tayvano
punto gráfico