Foto di Erwan Hesry su Unsplash

Come diffondere il tuo primo token

Questo è il secondo tutorial della serie di tutorial di bitfwd in cui insegniamo agli utenti di tutti i giorni (sì! Sei tu, mio ​​caro lettore) come interagire con la blockchain. Questo è un tutorial più avanzato e richiederà più strumenti di prima ma farò del mio meglio per guidarti attraverso i passaggi. Cominciamo!

Nel tentativo di essere il più inclusivo possibile, ho reso questo tutorial estremamente approfondito. Per gli utenti più esperti, sentiti libero di passare al Passaggio 4, dove apprendi come utilizzare i saldi delle esportazioni.

Una nota su come chiedere aiuto

Quando chiedo aiuto, ho solo una regola: prova a includere quante più informazioni possibili. (Ad esempio l'indirizzo del contratto, errori che compaiono nel terminale, il tipo di dispositivo.) In questo modo, non sarà necessario andare avanti e indietro nei commenti. Sentiti libero di unirti al nostro telegramma e chiedere aiuto lì. Ti risponderò non appena avrò tempo.

Prerequisiti

Devi seguire il tutorial di Moritz Neto su come distribuire il tuo contratto.

Cosa imparerai oggi

  1. Imparerai le basi di come navigare sulla riga di comando.
  2. Imparerai le basi di come fork e clonare i repository su Github.
  3. Imparerai come installare Nodejs tramite un gestore versioni chiamato NVM.
  4. Imparerai come usare Parity (un'implementazione Rust di geth) per estrarre i saldi dei conti dalla blockchain di Ethereum.
  5. Imparerai come eseguire Parity in modo da poter trasmettere le transazioni localmente dal tuo computer.
  6. Imparerai a conoscere la dimensione decimale del token, che appare in ogni contratto.
  7. Imparerai (finalmente!) A come preparare la sceneggiatura di airdropping ai token airdrop per te.
  8. Imparerai anche come implementare la tua funzione di trasmissione aerea personalizzata in modo da poter determinare quanti token ogni utente deve essere trasferito.

Passaggio I: Navigazione dalla riga di comando.

Frusta apri un terminale e inizia digitando:

pwd

Questo sta per "print working directory" e ti dice dove sei attualmente. Scegli un nome per la directory in cui desideri archiviare il codice e digita per creare la cartella. (mkdir = Crea directory, sta prendendo piede?)

mkdir "cool-folder-name-here"

Ora, andiamo nella directory usando il comando successivo.

cd "cool-folder-name-here"

Questo sta per "cambia directory" e ti sposterà dalla posizione corrente nella cartella appena creata. Puoi verificarlo eseguendo di nuovo pwd. Questa sarà l'estensione dei comandi terminali che imparerai oggi, ma se vuoi saperne di più, dai un'occhiata a questa risorsa e alle pagine man. Come esercizio, prova a capire cosa fa il comando "ls".

Assicurati di aver installato anche git. Puoi trovare i file di installazione qui.

Step II: Forking & Cloning.

Ora che abbiamo il nostro terminale pronto, dobbiamo inserire il codice sui nostri computer. Questo processo si chiama clonazione. Poiché potremmo apportare modifiche al codice, è meglio clonare un fork del codice rispetto alla base di codice stessa. Il forking ci consente di apportare modifiche al codice senza influire sul repository originale.

Imparare a fork ...

Quindi accedi a Github e visita il repository di codice. Nell'angolo in alto a destra c'è un pulsante fork che puoi fare clic per spostare il repository sul tuo account.

Quando termina il fork, noterai che ti ha reindirizzato alla tua copia del repository (puoi dire che è una copia perché nell'URL avrà il tuo nome nel mezzo invece di bitfwdcommunity).

Vicino alla parte centrale destra dello schermo c'è un pulsante "clona o scarica" ​​su cui farai clic. Assicurati di selezionare "Clona con HTTPS". Copia il collegamento e incollalo nel terminale con questo comando.

clone git "incolla-l'url-qui"

Quando premi Invio, ti verrà chiesto il tuo nome utente e quindi la tua password (usa il tuo nome utente e password Github). Tieni presente che le password non vengono visualizzate quando le digiti nel terminale. Al termine, inizierà a scaricare il repository di codici sul tuo computer. Al termine, digitare il comando seguente:

cd Airdropper

Questo ti sposterà nel repository Airdropper dove eseguirai i comandi necessari per usare questo strumento. Ora apri la cartella Airdropper nel tuo strumento di modifica del testo preferito (il mio preferito è Atom).

Passaggio III: installazione di Nodejs.

Questo script airdropping viene eseguito su Nodejs, che ti consiglio di installare tramite Node Version Manager. Il motivo per cui installeremo Nodejs utilizzando NVM invece di qualsiasi altro modo è perché consente uno sviluppo più sostenibile. NVM consente di avere un controllo accurato su quale versione di nodo si sta utilizzando, il che è utile se si lavora su progetti con molte versioni di nodo diverse come dipendenze.

Per installarlo, utilizzerai il seguente comando

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash

Riavvia il tuo terminale quando hai finito. Ora puoi installare nodejs! Puoi farlo con un semplice

nodo di installazione nvm

Passaggio IV: esportazione dei saldi dei conti

Per essere in grado di trasmettere con successo il nostro fantastico token ad altri, dobbiamo prima ottenere un elenco di tutti gli indirizzi che desideriamo trasmettere. Il modo più semplice per raggiungere questo obiettivo è utilizzare la funzione di stato di esportazione di Parity.

La prima cosa che devi fare è installare la parità.

Dopo averlo installato, è necessario sincronizzarlo con il blocco di cui si desidera scattare un'istantanea. Ciò significa che se si desidera estrarre tutti i saldi nel blocco 2 000 000, è necessario sincronizzare almeno il blocco 2 000 000. Notare che è necessario eseguirlo con la modalità archivio e fat-db attiva. Il comando che userete per raggiungere questo obiettivo è:

parità -pruning = archivio -fat-db = on -chain = ropsten

Puoi usare qualunque catena ti piaccia, ma in questo tutorial useremo ropsten. Per confermare che la parità ha le impostazioni corrette, verrà avviato con un gruppo di configurazioni visualizzate. Ci sarà una riga che dice "State DB Configuration". Controlla che questo dice archivio e fat-db.

Il motivo per cui vogliamo attivare la modalità archivio e fat-db è perché non vogliamo eliminare il trie di stato in cui sono archiviate tutte le informazioni sul saldo. Quando la parità esporta lo stato, genera l'equilibrio ripetendo il trie dello stato. Dopo aver effettuato la sincronizzazione con il blocco in cui si desidera esportare lo stato, è possibile interrompere la sincronizzazione della parità.

Supponiamo che desideriamo che i nostri saldi esportati rispettino le seguenti regole:

  1. Vogliamo i saldi nel blocco 2 000 000.
  2. Vogliamo saldi superiori a 1 000 RtETH
  3. Vogliamo saldi inferiori a 500000 RtETH

Date queste regole, utilizzeremmo il seguente codice:

stato esportazione parità --chain = ropsten -no-storage -no-code -min-balance = 1000 -max-balance = 500000 -at = 2000000 balances.json

Il completamento di questo processo può richiedere diverse ore.

Scoprirai mentre è importante impostare un saldo massimo, altrimenti alcuni utenti con enormi saldi potrebbero finire con tutti i token.

Passaggio V: Transazioni di trasmissione

Le transazioni di trasmissione alla rete Ethereum possono essere eseguite in due modi tramite un nodo remoto come Infura o una modalità di parità locale. Dal momento che trasmetteremo molte transazioni, è meglio usare il proprio nodo. Se hai sincronizzato il tuo nodo di parità usando fat-db e con la modalità di archiviazione attiva, la sincronizzazione è molto più lenta di quanto farebbe se fosse in modalità veloce. Per reimpostare il nodo e far sì che la sincronizzazione si riporti allo stato più recente, è possibile interrompere il database e riavviarlo utilizzando i seguenti comandi.

parità db kill -chain = ropsten
parità -chain = ropsten -pruning = fast -fat-db = off

Lascia che questo avvenga in background mentre prepariamo il resto degli strumenti.

Passaggio VI: dimensione decimale token

Prima di iniziare a configurare Airdropper, parlerò un po 'del campo decimali nel contratto token. Il campo decimali descrive sostanzialmente quanto sarà divisibile il tuo token. Il motivo è importante perché non tutti i token dovrebbero essere divisibili (ad esempio, vuoi un token "unicorno" divisibile?). Il valore predefinito per i decimali è 18. L'impatto del campo decimali è che tutti i valori dei token devono tenerne conto (ovvero avere altri 18 zero).

Passaggio VII: Preparazione di Airdropper

Adesso installiamo il contagocce. Il file principale è in index.js. Diamo un'occhiata alle righe 18–23, che contengono alcune variabili che possiamo modificare. Inizieremo facendo un airdrop molto semplice di 1 token per ciascun utente.

AIRDROP_QTY si riferisce alla quantità fissa di token che stai rilasciando a ciascun utente. Il valore predefinito è impostato su 1.
DURATION è il tempo che intercorre tra l'invio delle transazioni.
GAS_LIMIT e GAS_PRICE sono i rispettivi limiti e prezzi che sei disposto a pagare per la tua transazione. Puoi verificare quante transazioni in sospeso ci sono su etherscan prima di stimare la quantità di gas che sei disposto a pagare per transazione. Il valore predefinito a cui l'ho lasciato è 5gwei.

Ad esempio, se il contratto ha 1 000 000 token, sarà necessario impostare il valore INITIAL_TOKENS su 1 000 000 000 000 000 000 000 000 000. (1 000 000 * 10 ^ d, dove d è il valore decimale nel contratto , con 18 come valore predefinito).

Successivamente, dobbiamo impostare il nostro file di configurazione personalizzato. Crea un nuovo file nella directory principale (accanto a index.js) chiamato "config.js". Sembrerà qualcosa del genere ...

module.exports = {
    privateKey: "put-your-private-key-here",
    contractAddress: "inserisci-il-tuo-indirizzo-di-contratto-qui",
    abi: "put-your-deployed-contract-abi-here"
}

Se invece hai usato un seme, puoi rimuovere il campo privateKey e sostituirlo con un campo seme e l'Airdropper continuerà a funzionare. Se non hai conservato una copia della tua ABI, dovrai ricompilare il contratto in remix e copiare l'ABI (è sotto il campo bytecode).

Dopo aver creato un file config.js e aver finito di personalizzare i campi modificabili, ora sarai in grado di diffondere token (finalmente!). Poco prima di arrivare a questo, esamineremo una lista di controllo finale per assicurarci che tutto vada per il meglio ...

Elenco di controllo Airdrop

  1. Nodo di parità completamente sincronizzato. (Puoi controllare quale blocco stai combinando e confrontarlo con etherscan).
  2. Abbastanza RETET sul tuo account con i token. Puoi ottenere di più dal nostro rubinetto. Come stima del ballpark, 3000 transazioni su 5gwei avranno un costo di circa 0,5 RtETH (quindi assicurati di averne abbastanza!)
  3. La pagina del tuo account si apre su etherscan (su ropsten!) In modo da poter vedere le transazioni in sospeso che vengono trasmesse alla rete ethereum.

Se hai entrambe queste cose, sarai pronto per eseguire Airdropper con il seguente comando.

nodo index.js

Noterai che lo script inizierà a "bloccarsi" e a questo punto puoi aggiornare la pagina ethercan di ropsten e iniziare a visualizzare le transazioni in sospeso. Man mano che ogni transazione viene estratta, verranno stampati l'hash della transazione e i dati dell'indice al tuo terminale. Lascialo funzionare per un po 'e quando termina, terminerà da solo.

Puoi cercare il tuo contratto token qui. Quando visiti l'indirizzo, puoi fare clic sul campo Titolari token e quindi puoi vedere la distribuzione dei token di tutti i token. Al termine del contratto, vedrai che i token vengono distribuiti in base al saldo RtETH totale. Noterai che tutti i tuoi token sono ancora con il tuo account (perché ne abbiamo inviato uno solo a tutti gli altri!)

Passaggio VIII: funzione Airdrop personalizzata

In pratica, non vuoi solo che tutti abbiano un token. Forse hai una bella idea di come dovrebbero essere distribuiti i token. Ad esempio, forse pensi che gli utenti dovrebbero essere ricompensati in modo proporzionale in base alla quantità di RtETH che hanno. Ad esempio, se ci sono solo due utenti a cui desideri trasmettere e uno possiede il 10% del RtETH totale e l'altro possiede il 90% del RtETH, dovrebbero ricevere il 10% dei token e il 90% dei token, rispettivamente.

Fortunatamente per te, ho già implementato questa funzione per te. Ora, prima che riusciamo a riattivare i nostri token, dovrai ridistribuire i tuoi contratti e aggiornare l'indirizzo nel tuo file config.js. Dovrai inoltre assicurarti che il valore INITIAL_TOKENS nel file index.js alla riga 23 corrisponda al saldo esatto che hai coniato. Questo è importante poiché questo valore viene utilizzato nella funzione di calcolo del token.

Ad esempio, se il tuo contratto ha 1 000 000 token, dovrai impostare il valore INITIAL_TOKENS su 1 000 000 000 000 000 000 000 000 000. (1 000 000 * 10 ^ d, dove d è il valore decimale nel tuo contratto , con 18 come valore predefinito).

Funzione Airdrop personalizzata

Per aggiornare la nostra funzione di calcolo del token, andremo alla funzione chiamata "calcoloDrop" e commenteremo la riga 90 mentre si commenta la riga 84–89. Questa funzione comprende il saldo totale e il saldo proporzionale e restituisce la quantità di token necessari per essere trasferiti in aereo a questa persona. Una volta fatto questo, ripassa l'elenco di controllo e quindi puoi eseguire il codice!

Ora puoi controllare nuovamente il tuo contratto token su Etherscan e questa volta vedrai che i token sono distribuiti in modo molto più equo.

Token equamente distribuiti.

Se sei pronto per la sfida, prova a scrivere la tua funzione di distribuzione di token (e quindi invia un PR e quindi possiamo avere un'intera libreria di funzioni di airdrop personalizzate!);)

Conclusione

Bene, tutto qui! Ormai avrai imparato come distribuire il tuo primo contratto E distribuire i suoi token in modo equo. Qualcosa di poco chiaro in questo tutorial? Hai domande su come distribuirlo? Fatemi sapere nei commenti!

Se ti è piaciuto questo contenuto, (o vuoi che risponda più rapidamente alle tue domande;)) dammi qualche applauso! Se sei interessato a tutte le cose blockchain, seguimi su Twitter.