Bitcoin Forum
November 13, 2024, 01:39:02 PM *
News: Check out the artwork 1Dq created to commemorate this forum's 15th anniversary
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Transazione OP_Return su unico output  (Read 178 times)
CryptoCommand (OP)
Newbie
*
Offline Offline

Activity: 13
Merit: 0


View Profile
January 30, 2018, 09:47:10 AM
 #1

Ciao ragazzi, sto studiando una transazione di tipo OP_RETURN, per poter scrivere una stringa esadecimale all'interno della blockchain.

Pendo spunto da questo topic:

Quote

Qui un utente, utilizzando le funzioni del wallet di Bitcoin Core, da riga di comando, crea una transazione OP_RETURN, specificando però solo un output (1BxtgEa8UcrMzVZaW32zVyJh4Sg4KGFzxA ), che corrisponde con il suo input. In buona sostanza invia X Bitcoin a se stesso, lasciando la traccia dell'OP_RETURN, e una fee per i miners.

E' corretto "scrivere" in tal maniera sulla blockchain? Non sarebbe necessario specificare un secondo indirizzo di output per l'invio di Bitcoin piuttosto che utilizzare lo stesso?



picchio
Legendary
*
Offline Offline

Activity: 2506
Merit: 1120



View Profile
January 30, 2018, 09:52:11 AM
 #2

Ciao ragazzi, sto studiando una transazione di tipo OP_RETURN, per poter scrivere una stringa esadecimale all'interno della blockchain.

Pendo spunto da questo topic:

Quote

Qui un utente, utilizzando le funzioni del wallet di Bitcoin Core, da riga di comando, crea una transazione OP_RETURN, specificando però solo un output (1BxtgEa8UcrMzVZaW32zVyJh4Sg4KGFzxA ), che corrisponde con il suo input. In buona sostanza invia X Bitcoin a se stesso, lasciando la traccia dell'OP_RETURN, e una fee per i miners.

E' corretto "scrivere" in tal maniera sulla blockchain? Non sarebbe necessario specificare un secondo indirizzo di output per l'invio di Bitcoin piuttosto che utilizzare lo stesso?
Quando invii una transazione esponi la chiave pubblica che genera l'address e quindi si tende ad inviare il resto a nuovi indirizzi.
Non è obbligatorio e, se la rete la accetta e i miners sono soddisfatti della fee puoi farlo.

Waves mi piaceva ora non più.
CryptoCommand (OP)
Newbie
*
Offline Offline

Activity: 13
Merit: 0


View Profile
January 30, 2018, 10:01:48 AM
 #3

Ciao ragazzi, sto studiando una transazione di tipo OP_RETURN, per poter scrivere una stringa esadecimale all'interno della blockchain.

Pendo spunto da questo topic:

Quote

Qui un utente, utilizzando le funzioni del wallet di Bitcoin Core, da riga di comando, crea una transazione OP_RETURN, specificando però solo un output (1BxtgEa8UcrMzVZaW32zVyJh4Sg4KGFzxA ), che corrisponde con il suo input. In buona sostanza invia X Bitcoin a se stesso, lasciando la traccia dell'OP_RETURN, e una fee per i miners.

E' corretto "scrivere" in tal maniera sulla blockchain? Non sarebbe necessario specificare un secondo indirizzo di output per l'invio di Bitcoin piuttosto che utilizzare lo stesso?
Quando invii una transazione esponi la chiave pubblica che genera l'address e quindi si tende ad inviare il resto a nuovi indirizzi.
Non è obbligatorio e, se la rete la accetta e i miners sono soddisfatti della fee puoi farlo.

Quindi io posso inviare a me stesso X Bitcoin (meno la Fee) e la validazione non dovrebbe essere in dubbio.

Il punto è quello che ho evidenziato in grassetto.
In che senso se la rete la accetta?

Al di la del discorso privacy, possono esserci controindicazioni "tecniche" in questo tipo di transazione dove output e input corrispondono? Se ho capito bene in questo caso l'output funge sia da Recipient Address che da Change Address, giusto?
rrupoli
Jr. Member
*
Offline Offline

Activity: 31
Merit: 20


View Profile
January 30, 2018, 10:29:35 AM
 #4


Quindi io posso inviare a me stesso X Bitcoin (meno la Fee) e la validazione non dovrebbe essere in dubbio.

Il punto è quello che ho evidenziato in grassetto.
In che senso se la rete la accetta?

Al di la del discorso privacy, possono esserci controindicazioni "tecniche" in questo tipo di transazione dove output e input corrispondono? Se ho capito bene in questo caso l'output funge sia da Recipient Address che da Change Address, giusto?


Nessuna controindicazione, si tratta della transazione più semplice che si possa creare: 1 input, 1 output.

Stabilisci la fee, ad esempio 0.001 BTC e poi scegli un UTXO a piacere da usare come input.

Ad esempio supponi di avere un UTXO con 1 BTC associato all'indirizzo 1addressxxx, puoi forgiare la transazione come segue:

Input: 1addressxxx (1BTC)
Output: 1addressxxx (0.999 BTC)

E' una transazione che puoi creare facilmente anche con Electrum, scegliendo con quale UTXO pagare e fissando l'ammontare delle fees.

CryptoCommand (OP)
Newbie
*
Offline Offline

Activity: 13
Merit: 0


View Profile
January 30, 2018, 10:38:03 AM
 #5


Quindi io posso inviare a me stesso X Bitcoin (meno la Fee) e la validazione non dovrebbe essere in dubbio.

Il punto è quello che ho evidenziato in grassetto.
In che senso se la rete la accetta?

Al di la del discorso privacy, possono esserci controindicazioni "tecniche" in questo tipo di transazione dove output e input corrispondono? Se ho capito bene in questo caso l'output funge sia da Recipient Address che da Change Address, giusto?


Nessuna controindicazione, si tratta della transazione più semplice che si possa creare: 1 input, 1 output.

Stabilisci la fee, ad esempio 0.001 BTC e poi scegli un UTXO a piacere da usare come input.

Ad esempio supponi di avere un UTXO con 1 BTC associato all'indirizzo 1addressxxx, puoi forgiare la transazione come segue:

Input: 1addressxxx (1BTC)
Output: 1addressxxx (0.999 BTC)

E' una transazione che puoi creare facilmente anche con Electrum, scegliendo con quale UTXO pagare e fissando l'ammontare delle fees.



Va benissimo, il mio dubbio riguardava più che altro utilizzare lo stesso indirizzo di invio e ricezione.

Grazie BTC
rrupoli
Jr. Member
*
Offline Offline

Activity: 31
Merit: 20


View Profile
January 30, 2018, 10:54:54 AM
 #6


L'indirizzo in output potrebbe essere anche un indirizzo creato a tavolino di cui non possiedi la chiave privata come questo:

1BitcoinTrashBinMoneyLostXXXYd3q66   


La transazione andrebbe ugualmente a buon fine (anche se poi non potresti recuperare i bitcoins trasferiti, tecnicamente viene definito "burn address", in pratica è come buttare i bitcoins nell'immondizia).



picchio
Legendary
*
Offline Offline

Activity: 2506
Merit: 1120



View Profile
January 30, 2018, 12:18:00 PM
 #7

...
Va benissimo, il mio dubbio riguardava più che altro utilizzare lo stesso indirizzo di invio e ricezione.

Grazie BTC
Non mi risultano controindicazioni e spesso si fa per recuperare il resto quando non si considera il problema dell'esposizione della chiave privata (al momento non dovrebbe essere ancora in problema, con i PC quantistici pare possa essere pericoloso).

Waves mi piaceva ora non più.
CryptoCommand (OP)
Newbie
*
Offline Offline

Activity: 13
Merit: 0


View Profile
February 05, 2018, 12:09:32 PM
 #8

Riprendo il discorso della funzione OP_RETURN per chiedervi un'ulteriore delucidazione. Per quale motivo a questo invio di "stringhe" sulla blockchain non vi è bisogno di associare un indirizzo di destinazione? E' perchè in effetti non vi sarebbe un invio di moneta, data la particolarità di questa funzionalità?

Vi allego una transazione che ho effettuato. Dei tre output, il primo fa riferimento all'OP_RETURN, gli altri due invece si riferiscono all'indirizzo di ricezione e quello di ritorno.

Grazie  Wink

Code:
{
  "status" : "success",
  "data" : {
...
    "inputs" : [
      {
        "input_no" : 0,
       "address" : "Indirizzo_0",
        "value" : "0.00700000",
        "received_from" : {
          "txid" : "xxx",
          "output_no" : 1
        },
        "script_asm" : "xxx",
        "script_hex" : "xxx"
      }
    ],
    "outputs" : [
      {
        "output_no" : 0,
        "address" : "nulldata",
        "value" : "0.00000000",
       "type" : "nulldata",
        "req_sigs" : null,
        "spent" : null,
      "script_asm" : "OP_RETURN xxx",
        "script_hex" : "xxx"
      },
      {
        "output_no" : 1,
      "address" : "Indirizzo_1",
        "value" : "0.00550000",
        "type" : "pubkeyhash",
        "req_sigs" : 1,
        "spent" : null,
        "script_asm" : "OP_DUP OP_HASH160 xxx OP_EQUALVERIFY OP_CHECKSIG",
        "script_hex" : "xxx"
      },
      {
        "output_no" : 2,
        "address" : "Indirizzo_2",
        "value" : "0.00100000",
        "type" : "pubkeyhash",
        "req_sigs" : 1,
        "spent" : null,
        "script_asm" : "OP_DUP OP_HASH160 xxxOP_EQUALVERIFY OP_CHECKSIG",
        "script_hex" : "xxx"
      }
    ],
    "tx_hex" : "xxx"
  },
  "code" : 200,
  "message" : ""
}
rrupoli
Jr. Member
*
Offline Offline

Activity: 31
Merit: 20


View Profile
February 06, 2018, 01:50:42 PM
Merited by picchio (1)
 #9

Riprendo il discorso della funzione OP_RETURN per chiedervi un'ulteriore delucidazione. Per quale motivo a questo invio di "stringhe" sulla blockchain non vi è bisogno di associare un indirizzo di destinazione? E' perchè in effetti non vi sarebbe un invio di moneta, data la particolarità di questa funzionalità?

Vi allego una transazione che ho effettuato. Dei tre output, il primo fa riferimento all'OP_RETURN, gli altri due invece si riferiscono all'indirizzo di ricezione e quello di ritorno.

Grazie  Wink



Il sistema Bitcoin supporta un vero e proprio linguaggio di scripting sebbene con limitazioni.
Quindi il nodo validatore, se la stringa di output è formalmente corretta fa quello che gli dici di fare.
Con il comando OP_RETURN gli dici di interrompere l'esecuzione dello script, i successivi bytes (max 80 bytes) rimarranno per sempre nella blockchain ad imperitura memoria.
L'UTXO forgiato con un OP_RETURN non è spendibile (risulteranno 0 BTC).

Puoi studiarti le ultime transazioni sulla blockchain che fanno uso del comando OP_RETURN sfruttando le API Smartbit:
https://www.smartbit.com.au/api

Vai su OP_RETURNS ed imposta nei parametri "eternity-wall" per vedere gli ultimi graffiti che sono stati scolpiti nella blockchain (c'è un po' di tutto, dai proclami politici, alle dichiarazioni d'amore, alle ingiurie,  alla promozione di siti, citazioni, etc)

Per studiarti la transazione che ti interessa seleziona la TxID, vai nella sezione "Transaction" e flagga il checkbox "HEX".


CryptoCommand (OP)
Newbie
*
Offline Offline

Activity: 13
Merit: 0


View Profile
February 06, 2018, 06:31:35 PM
 #10

Riprendo il discorso della funzione OP_RETURN per chiedervi un'ulteriore delucidazione. Per quale motivo a questo invio di "stringhe" sulla blockchain non vi è bisogno di associare un indirizzo di destinazione? E' perchè in effetti non vi sarebbe un invio di moneta, data la particolarità di questa funzionalità?

Vi allego una transazione che ho effettuato. Dei tre output, il primo fa riferimento all'OP_RETURN, gli altri due invece si riferiscono all'indirizzo di ricezione e quello di ritorno.

Grazie  Wink



Il sistema Bitcoin supporta un vero e proprio linguaggio di scripting sebbene con limitazioni.
Quindi il nodo validatore, se la stringa di output è formalmente corretta fa quello che gli dici di fare.
Con il comando OP_RETURN gli dici di interrompere l'esecuzione dello script, i successivi bytes (max 80 bytes) rimarranno per sempre nella blockchain ad imperitura memoria.
L'UTXO forgiato con un OP_RETURN non è spendibile (risulteranno 0 BTC).

Puoi studiarti le ultime transazioni sulla blockchain che fanno uso del comando OP_RETURN sfruttando le API Smartbit:
https://www.smartbit.com.au/api

Vai su OP_RETURNS ed imposta nei parametri "eternity-wall" per vedere gli ultimi graffiti che sono stati scolpiti nella blockchain (c'è un po' di tutto, dai proclami politici, alle dichiarazioni d'amore, alle ingiurie,  alla promozione di siti, citazioni, etc)

Per studiarti la transazione che ti interessa seleziona la TxID, vai nella sezione "Transaction" e flagga il checkbox "HEX".





Grazie  Smiley
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!