Artikkeli
Nonce ja odottavat Ethereum-tapahtumat: miksi yksi maksu voi tukkia jonon?
Jos Ethereum-lompakossasi näkyy useita odottavia tapahtumia, selvitä ensin saman lähettävän tilin varhaisin käsittelemätön tapahtuma. Myöhempi tapahtuma ei välttämättä pääse etenemään ennen sitä. Uuden siirron lähettäminen uudella järjestysnumerolla ei siis välttämättä ratkaise ongelmaa.
Tässä puhutaan Ethereum-pääverkon tavallisen käyttäjätilin tapahtumista, ei Bitcoin-siirroista. Lompakoiden ja palveluiden näkymät vaihtelevat, eikä alla ole tietyn käyttöliittymän testattuja painikeohjeita.
Mitä nonce kertoo?
Nonce on tilikohtainen, tapahtumasta toiseen kasvava järjestysnumero. Se liittyy lähettävään tiliin, ei vastaanottajan osoitteeseen tai siirrettävän tokenin nimeen. Ethereum kuvaa noncen tapahtumakenttänä, jonka avulla tunnistetaan tililtä lähetetyn tapahtuman järjestys.1
Samasta tilistä tehty ETH-siirto ja älysopimusta käyttävä token-tapahtuma kuuluvat tässä tarkastelussa samaan tapahtumajärjestykseen. Myös sopimuksen käyttö voi vaatia verkkomaksun: tapahtuman ei tarvitse olla tavallinen rahansiirto vaikuttaakseen seuraaviin tapahtumiin.1
Kun tapahtuma lähetetään, se voi odottaa ennen kuin validaattori sisällyttää sen lohkoon. Odottava ei siksi ole sama asia kuin onnistunut. Lohkoon päätyminen ja myöhempi lopullisuuden vahvistuminen ovat erillisiä vaiheita.1
Ajatusesimerkki jonosta
Kuvitteellinen esimerkki: lompakko lähettää samasta Ethereum-tilistä tapahtumat nonce-arvoilla 10, 11 ja 12. Tapahtuma 10 jää odottamaan, ja kaksi myöhempää näkyvät myös keskeneräisinä. Järjestysnumeron 10 ratkaiseminen on ensimmäinen tutkittava kohta; arvon 12 tapahtuman lähettäminen uudelleen toisella, vielä suuremmalla arvolla ei poista aiempaa aukkoa.
Esimerkki kuvaa periaatetta, ei ennustetta siitä, milloin tapahtuma toteutuu. Se ei myöskään kerro, että jokainen viive johtuu noncesta. Maksuasetukset, tilin varat, palveluntarjoajan näkymä ja verkon tilanne voivat vaikuttaa siihen, mitä näet. Tarkista tapahtuman tiedot ennen johtopäätöstä.
Tarkista sama tili, verkko ja tapahtuma
Etsi lompakosta tai lohkoketjun selaimesta lähettävä osoite, käytetty verkko, tapahtumatunniste ja näkyvä tila. Jos saat nonce-arvot esiin, vertaile niitä saman osoitteen tapahtumien kesken. Kirjaa muistiin myös lähetyshetki ja lompakon näyttämät maksutiedot.
Pelkkä ruudun teksti ”pending” ei välttämättä paljasta koko tilannetta. Eri solmuilla voi olla erilainen käsitys odottavista tapahtumista, eikä yksittäinen näkymä todista, että alkuperäinen tapahtuma on kadonnut kaikkialta. Gethin dokumentaatio kuvaa erikseen käsittelyä odottavia ja myöhempään käsittelyyn jonotettuja tapahtumia.8
Jos kyse on palvelun hallinnoimalta tililtä tehdystä nostosta, et välttämättä hallitse lähettävän tilin tapahtumia itse. Silloin kysy tilannetta palvelun omasta tuesta. Älä oleta, että sinun lompakkosi osoite on sama kuin varsinainen lähettäjä.
Korvaaminen ei ole tavallinen uusi maksu
Samalle tilille ja samalle nonce-arvolle voidaan lähettää kilpailevia tapahtumia. Gethin dokumentaatio mainitsee, että samaan tiliin ja nonceen voi liittyä useita eri tapahtumia.8 Tämä on eri asia kuin lähettää kokonaan uusi tapahtuma seuraavalla numerolla.
Joissakin lompakoissa voi olla nopeutus- tai peruutustoiminto. Niiden saatavuus, ehdot ja hyväksyttävät maksujen korotukset riippuvat lompakosta ja solmun käytännöistä. Älä arvaa tarvittavaa prosenttia tai toista vieraan palvelun ohjetta tarkistamatta sen sopivuutta omaan tilanteeseesi.
Peruutusyritys ei ole peruuttamisen takuu. Alkuperäinen tapahtuma voi ehtiä lohkoon ennen kilpailevaa tapahtumaa, eikä myöhemmin tehty pyyntö yksin kumoa jo toteutunutta toimintoa. Tarkista lopputulos ja vastaanottajan tai sopimuksen toiminto ennen kuin teet lisää siirtoja.
Ennen kuin hyväksyt mitään
- Varmista, että käytössä on oikea verkko ja lähettävä osoite. Samannäköinen osoite toisessa verkossa ei yksin kerro tämän tapahtuman tilasta.
- Selvitä vanhimman odottavan tapahtuman nonce, kohde ja sisältö. Älysopimuskutsu voi tehdä muutakin kuin siirtää ETH:ta.
- Tarkista lompakon virallisista ohjeista, voiko tapahtumaa korvata ja mitä uudet maksuehdot tarkoittavat. Varaa tilille verkkomaksuun tarvittavat varat, mutta älä siirrä niitä tuntemattoman pyynnöstä.
- Seuraa molempien mahdollisten tapahtumien tilaa. Älä päättele onnistumista pelkästä lähetysilmoituksesta.
Jos et ymmärrä allekirjoitettavaa tapahtumaa, pysähdy. Tuki ei tarvitse palautuslausettasi eikä yksityistä avaintasi tilanteen selvittämiseen. Vahvista tukikanava itse, älä odottavan tapahtuman varjolla tulleesta viestistä.3
Milloin kannattaa odottaa ja milloin kysyä apua?
Jos tapahtuma on juuri lähetetty, sen näkyminen keskeneräisenä ei yksin kerro virheestä. Tarkista ensin, onko kyse todella Ethereum-pääverkosta ja näyttääkö lompakko tapahtumalle tunnisteen. Vertaa näkymää lohkoketjun selaimeen: jos tiedot eroavat, kirjaa molemmat havainnot ja tarkista ne uudelleen ennen uutta allekirjoitusta.
Jos et näe varhaisinta tapahtumaa tai et pysty päättelemään, mikä numero on seuraavana, kysy apua lompakon virallisesta tuesta. Kerro verkko, julkinen lähetysosoite ja tapahtumatunniste vain sen verran kuin asian selvittäminen vaatii. Ne voivat paljastaa julkista tapahtumahistoriaa, joten jaa ne harkiten. Yksityistä avainta tai palautuslausetta ei pidä lähettää.
Jos alkuperäinen tapahtuma näkyy lohkossa epäonnistuneena, tilanne ei ole sama kuin verkossa odottaminen. Tarkista tilatiedon merkitys ja mahdollinen maksu lompakon sekä lohkoselaimen tiedoista. Älä lähetä samaa sopimuskutsua uudelleen ennen kuin ymmärrät, mitä se tekee ja mitä aiemmalle yritykselle tapahtui.
Sources
[1] Ethereum.org, Transactions: https://ethereum.org/developers/docs/transactions
[3] Ethereum.org, Wallet security: https://ethereum.org/en/wallets/security
[8] Go Ethereum, txpool namespace: https://geth.ethereum.org/docs/interacting-with-geth/rpc/ns-txpool