Podvodné schopnosti nalezené ve smluvním kódu Bitfinex LEO ERC20

Je velmi dobře známo, že chytré smlouvy mohou být složité. Netechničtí lidé se nechají zlákat k nákupu tokenu ERC20 na základě úrovně humbuku, aniž by museli předem vědět o kvalitě tokenu a bezpečnosti tokenu, který kupují.

Bitfinex, jedna z největších kryptoburz v oboru, vydala token s názvem LEO. Tento token umožňuje entitě, která jej ovládá, tisknout nebo ražit neomezené množství nových tokenů, také jim umožňuje mazat mince kohokoli, mimo jiné včetně těch na centralizovaných nebo decentralizovaných burzách, horkém nebo studeném úložišti, hardwarové nebo softwarové peněžence a / nebo papírovou nebo mozkovou peněženku.

Nenechte se zmást, nákup ERC20 neznamená, že vaše aktiva jsou skutečně vaše! Není to poprvé, co jsem vystavil tak chytrou smlouvu. Jen minulý týden jsme na Cointelligence zveřejnili zprávu o podobné inteligentní smlouvě, která umožňuje stejnou funkčnost, podívejte se na naši recenzi o KDY Inteligentní smlouva.

Umožňuje smlouva LEO ERC20 podvod a / nebo podvody v hodnotě několika miliard dolarů?

Necháme na vás, abyste se rozhodli, nyní se ponoříme hluboko do LEO Tokenu.

Úvod

LEO je token ERC20 představený 10. května 2019 společností iFinex Inc. v jejich oznámení. Můžete najít LEO Whitepaper tady. I když jsme nebyli schopni najít úložiště GitHub, jejich kód smlouvy o tokenu byl ověřen na Etherscan. K testování a nasazení kopie tohoto tokenu v testovací síti Ropsten jsme použili ověřený kód Etherscan pro LEO, LeoController a TokenFactory.

Token LEO – Token ERC20 vydaný společností Unus Sed Leo Limited, dceřinou společností společnosti iFinex Inc..

Ovladač – Smlouva s kontrolérem umožňuje vlastníkovi převést, schválit, vydat, vypálit a změnit samotný kontrolér. Vezměte prosím také na vědomí, že ačkoliv smlouva „0xf17ebb3a24dc6d6b56d38adf0df499c1cd9e5672“ v současné době „řídí“ smlouvu LEO ERC20, „ovladač“ může vlastník kdykoli snadno upgradovat nebo změnit na libovolnou adresu, což mu umožňuje do značné míry dělat cokoli s tokenem LEO.

Smlouva správce LEO

Smlouva LEOController: Vlastník může změnit „Controller“ smlouvy LEO ERC20Smlouva o LEOControleru Vlastník může změnit Správce smlouvy LEO ERC20

The LEOController vlastník smlouvy může kdykoli změnit „správce“ a nastavit jej na jakoukoli adresu peněženky, kterou ovládá.

  • Voláním funkce „upgradeController“ na lince 698 a zadáním libovolné adresy peněženky podle svého výběru.
  • Po potvrzení výše uvedené transakce se zadaná adresa stane novým „správcem“ smlouvy LEO ERC20.

Smlouva LEO: Vlastník může spálit vaše žetony a razit neomezené množství nových žetonůSmlouva LEO Vlastník může spálit vaše žetony a razit neomezené množství nových žetonů

Jak mohl vlastník LEO ponechat navždy razit žetony?

Jak bylo vysvětleno dříve, jakmile se adresa řadiče změní na adresu peněženky (nebo dokonce novou inteligentní smlouvu), mohli jednoduše zavolat funkci „generateTokens“ na lince 460.

Parametry

  • _vlastník → Peněženka, která obdrží nově vyražené LEO tokeny.
  • _množství → Množství žetonů k „tisku“, které budou odeslány na výše uvedenou adresu.

Poznámka – Dokument LEO nezmiňuje, jaké je maximální množství tokenů, a tato smlouva jim umožňuje pokračovat v razení tokenů LEO, protože jsme mohli pomocí jejich kódu „vytisknout“ kvadrillion LEO tokenů na testnet.

Jak mohl vlastník LEO smazat žetony někoho jiného?

Funkce „destruTokens“ na 477 umožňuje peněžence řadiče LEO vypalovat tokeny LEO kohokoli, mimo jiné včetně tokenů přítomných v centralizované nebo decentralizované burze, hardwarové nebo softwarové peněženky, horkého nebo studeného úložiště a / nebo papíru nebo mozku peněženka. Nezáleží na tom, kde jsou vaše mince, mohou vaše mince smazat, pokud chtějí. Tak jednoduché.

Parametry

  • _owner → Peněženka, ze které budou vypáleny existující LEO tokeny.
  • _množství → Množství žetonů k „smazání“ z výše uvedené adresy peněženky.

Další důkazy

Zkopírovali jsme přesně stejný kód pro token, řadič a továrnu LEO ERC20, abychom nasadili následující smlouvu na Ropsten testnet.

Peněženky / adresy

  • Adresa odesílatele: 0x58FA58089956c5cba21d9f61434B1902F8121b32
  • Náhodně vygenerovaná adresa: 0xada183F6Ff6E7805EE5bDA701d40958858FeE548

Nejprve jsme změnili ovladač z adresy odesílatele na kopii „LEOController“, abychom zjistili, zda bychom mohli znovu změnit ovladač zpět na adresu odesílatele pomocí funkce „upgradeController“.

Kroky

  • Token Factory Nasazeno
  • Token LEO Nasazeno
  • LEOController Nasazeno
  • Zkontrolováno, kdo je ve skutečnosti „kontrolorem“ smlouvy LEO tokenu: 0x58FA58089956c5cba21d9f61434B1902F8121b32.
  • Řadič byl změněn pomocí funkce „changeController“ u smlouvy LEO na dříve nasazený Smlouva „LEOController“
  • Potvrzeno, že ovladač byl ve skutečnosti změněn na adresu inteligentního kontraktu.

V tomto okamžiku je naše smlouva LEO testnet přesně podobná smlouvě LEO ERC20 následujícími způsoby

  • Správcem smlouvy LEO je inteligentní smlouva.
  • Kód řadiče v testnet přesně odpovídá jednomu v síti.

Nyní se snažíme určit:

  • Pokud můžeme spálit nebo zničit něčí LEO tokeny první změnou ovladače.
  • Pokud dokážeme vydat šíleně velké množství LEO tokenu, abychom zjistili, zda existuje víčko.

Kroky

  • I když jsme v tuto chvíli věděli, že vlastník nemůže změnit správce u smlouvy „LEO“ pomocí funkce „changeController“, stále jsme úmyslně odeslali tuto transakci, aby se vrátila nebo selhala. Selhalo
  • Šli jsme na smlouvu „LEOController“ a pomocí funkce „upgradeController“ jsme znovu změnili řadič kontrolované inteligentní smlouvy, tj. LEO, na adresu odesílatele. Uspěl

Poznámka – že jsme změnili řadič ze Senderu na inteligentní smlouvu a pak zase zpět na Sender, protože jsme vám chtěli ukázat, že je pro nás celkem snadné změnit řadič v testnetu (a pro ně v mainnetu).

Vydávání tokenů

Protože nyní je odesílatel opět správcem smlouvy LEO, má přístup k funkcím smlouvy LEO „generateTokens“ a „destruTokens“. Vygenerovali jsme náhodnou adresu peněženky „0xada183F6Ff6E7805EE5bDA701d40958858FeE548“, abychom několik šíleně poslali obrovské množství LEO tokenů 1 000 000 000 000 000 000 000 000 000 000 000 000 (jeden undecillion) LEO převedeno.

Hořící žetony

Chtěli jsme zjistit, zda jsme (odesílatel) mohli odstranit nebo zničit tokeny z náhodné adresy 0xada183F6Ff6E7805EE5bDA701d40958858FeE548, které jsme dříve generovali.

Ve výše uvedené transakci jsme úspěšně spálili / smazali / zničili 10 000 000 000 (deset miliard) tokenů z peněženky někoho jiného nebo z adresy, kterou jsme nevlastnili.

Můžete vidět, že adresa „0xada183F6Ff6E7805EE5bDA701d40958858FeE548“ má nyní zůstatek 999 999 999 999 999 999 999 999 999 000 000 000 (devět set devadesát devět devět devět devět devět devět devět devět devět devět devět devět devět devět devět devět devět devět devět devět devět devět devět devět devět devět devět devět devět devět devět devět devět devět devět devět devět devět devět devět devět devět devět devět devět devět devět devět devět devět devět devět devět devadesát devět devět devět , devět set devadesát devět devět devět devět devět devět devět devět devět devět devět devět bilionů devět set devadesát miliard) pouze testovací LEO tokeny.

Srovnání smluv

LEV Originál Testnet Rozdíl
MiniMeTokenFactory Originál Testnet Rozdíl
LEOController Originál Testnet Rozdíl

TLDR: Jak to na mě působí?

Paolo Ardoino, technický ředitel společnosti Bitfinex, odpověděl na náš tweet který nastiňuje tento problém a uvádí:

“Z bezpečnostních a budoucích důvodů jsme nechali možnost upgradovat také Tokenovou smlouvu.” To je opravdu klíčová vlastnost smlouvy, která může žít mnoho let. Těžba více žetonů by pro Finex neměla smysl … jako kdybychom stříleli na naši nohu. “

Nejen že jsme milovali jeho tweet, ale chtěli bychom mu také veřejně poděkovat za odpověď, protože věříme, že tímto způsobem se můžeme držet odpovědnosti a pomoci tomuto odvětví směřovat k lepší budoucnosti.

Nyní se vraťme k práci! Uvědomte si, že inteligentní smlouvy jsou navrženy tak, aby byly důvěryhodné. Bitfinex zde ruší důvěru tím, že sem umístil zadní vrátka, což jim dává lístek, aby mohli podvádět, kdykoli je to potřeba, s nespravedlivou výhodou oproti lidem jako ty a já. Jediným faktem, na který jsme opakovaně v celém tomto článku poukazovali, je jejich schopnost razit libovolný počet (nebo neomezeně) mincí LEO podle vlastního uvážení a mazat jakékoli mince peněženky, ať už v budoucnu nebo v budoucnu.

Abychom shrnuli a zjednodušili vše pro naše netechnické čtenáře, nepopíráme ani nezpochybňujeme schopnost upgradovat inteligentní smlouvu. Problém zde není technický, ale filozofický. Pokud jste v pořádku s tím, že Bitfinex dokáže dělat to, co umí s LEO, rozumíme tomu také a respektujeme váš pohled. Ale pro nás si LEO nehraje dobře s duchem a filozofií blockchainu, protože dokáže diktovat podmínky. Na základě našeho chybného a skromného porozumění kryptoměna také:

  • Mělo by být otevřeno všem. Můžete přicházet a odcházet, jak chcete. ✓
  • Mělo by to být spravedlivé. Nikdo by neměl mít žádnou nespravedlivou výhodu oproti komukoli jinému. ✘
  • Mělo by být inkluzivní. Nemělo by to být omezeno na kohokoli bez ohledu na to, co řekli nebo udělali, nebo odkud přišli, místo toho by to bylo naprosto lhostejné "SZO" jsou nebo "co" mohly by se stát. ✘
  • Mělo by být odolné vůči cenzuře, pokud není bez cenzury. Nikomu by nemělo být v daném okamžiku zastaveno používání nebo přístup k jakékoli funkci. Pokud jde o blockchainovou síť (v tomto případě o inteligentní smlouvu), mělo by se i se špatnými aktéry, jako jsou podvodníci, hackeři a podvodníci, zacházet necenzurovaným způsobem – inkluzivně, stejně, otevřeně a spravedlivě. Pokud nemůžete cenzurovat špatné herce v bitcoinech, proč byste to měli dělat v LEO? „Upgradovatelnost“ neospravedlňuje „schopnost“ diktovat podmínky. ✘
  • Mělo by to být neměnné. Ať se stalo cokoli, mělo by tam zůstat navždy, aby kdokoli a všichni potvrdili, souhlasili nebo nesouhlasili. ✓
  • Síť by měla být decentralizovaná. Neměl by existovat žádný ústřední subjekt, který by mohl diktovat podmínky toho, co by se mělo stát. I když je síť Ethereum decentralizovaná, smlouva s tokeny LEO není proto, že mohou diktovat podmínky. ✘
  • Mělo by být distribuováno. Každý by měl mít možnost získat historii sítě a ověřit pravost dat. ✓

Lidé důvěřují blockchainu, protože je důvěryhodný. Díky důvěryhodné důvěryhodné povaze blockchainu se lidé jako vy a já zajímali o tuto úžasnou technologii.

Nemáme osobní zášť vůči Bitfinexu na osobní úrovni, ale nebojíme se na ně ukazovat prstem, když máme pocit, že se mýlí a že musí udělat správnou věc. Nabízíme řešení společnosti Bitfinex, vytvořit nový token bez těchto funkcí a vyměnit je s investory. Samotná tato akce by mohla zvýšit důvěru investorů v token LEO.

A konečně, tato debata může probíhat v kruzích, protože Bitfinex by tvrdil, že potřebuje „upgradovatelnost“ (je to opravdu tak?) A my bychom prostě nepřijali skutečnost, že mince někoho jiného může být vymazána, i když to není naše. Tímto náš případ ponecháváme na vás, našem úžasném čtenáři, abyste se rozhodli sami a zjistili, zda chcete důvěřovat smlouvě LEO ERC20.