History of hacks and incident in the crypto space

Bancor Hack (2020-06-16)

Short Version: A public call in the smart contract allowed anybody to withdraw token from the contract. The problem is not the function being public, the allowed input type has been set too general. Bancor did a white hat attack to withdraw all funds. Funds were lost by front running bots, not by hacker. Maybe part of it will be returned for a bug bounty.

What I think about this

It's crazy that an audit did not reveal this, because it looks like a trivial bug/mistake to me. It's not about logical problems, it's about allwod input type, if I am right (Not a smart contract dev myself). Bancor did fix this bug at June 13. It looks like the code fragment was introduced in one step, so like copy/past from another source?

Commit which introduced the bug:
https://github.com/bancorprotocol/contracts-solidity/commit/bd4060bf060cc55aaa11af86ec03a14026ee5b3d#diff-936d4cb65ef1b220e833b30f52f8d74f

Fix: https://github.com/bancorprotocol/contracts-solidity/commit/47d8663d720d49aed55710039875070d514baca4

At risk: $455,349
Lost: $135,229, not by the smart contract failure, but by some front running bot during white hat attack.
Solved: White hat attack and new contraced deployed
Code: https://github.com/bancorprotocol/contracts-solidity/blob/d4b1dc7b2e4d46a555b48ad34fd0fe235abad7b4/solidity/contracts/utility/TokenHandler.sol#L45-L47

Sources
I used these both sources for this short version:
https://blog.bancor.network/bancors-response-to-today-s-smart-contract-vulnerability-dc888c589fe4?gi=ccf539fc91b
https://medium.com/@1inch.exchange/bancor-network-hack-2020-3c71444fd59d

Parity Hack (2017-11-06)

"I accidentally killed it"
https://github.com/openethereum/openethereum/issues/6995

https://medium.com/solidified/parity-hack-how-it-happened-and-its-aftermath-9bffb2105c0

Gas Token on Ethereum

How a gas token works.

A gas token writes some garbage data on-chain and pays for this. Normaly you mint the gas token when gas price is low. (Around 1 Gwei). If gas price hight somebody destroys the gas token and ethreum pays back a refund and this refund can be used to pay for the gas cost of the including contract.

CHI

https://1inch-exchange.medium.com/everything-you-wanted-to-know-about-chi-gastoken-a1ba0ea55bf3

To mint CHI:

  1. Go to https://etherscan.io/token/0x0000000000004946c0e9f43f4dee607b0ef1fa1c#writeContract
  2. Connect Metamask
  3. call mint with the number of chi token you want to mint
  4. set gas very low on tx and wait, and wait, and wait, and wait, and wait

GAS Token 2 (GST2), 19 September 2017

Creats contracts and deletes these for refund. Efficiency is 3.02

CREATE + SELFDESTRUCT is used for refund.

Read more on https://gastoken.iohttps://gastoken.io

https://etherscan.io/address/gst2.gastokenio.eth
https://etherscan.io/token/0x0000000000b3F879cb30FE243b4Dfee438691c04

GAS Token 1 (GST1) Mainnet 07 March 2018

Writes data to storage (SSTORE) and deletes these for refund. Efficiency is 2.60
SSTORE is used for refund.

https://etherscan.io/address/gst1.gastokenio.eth
https://etherscan.io/token/0x88d60255f917e3eb94eae199d827dad837fac4cb

Read more on GST2 and 1 GST1 https://gastoken.io

Gastoken on ETC

Gastoken also exists on ETC. And because ETC allows 0 gas transaction sometimes you can generate them for free!

Have look here for the GST2 on ethereum classic:

https://etcblockexplorer.com/address/0x0000000000b3F879cb30FE243b4Dfee438691c04

Here you see a 0 gas tx which mints a GST2 token:

https://etcblockexplorer.com/tx/0x87dec4adcd5702ed59acc7a7229dc23d6bcc9bf14e0388db3a97c20592dee9c5

A protocol for domain trading via Blockchain

Artikel in Deutsch

Analysis

The market for domain trading is a very illiquid market with high barriers:

  • The pricing is not transparent.
  • High referral fees are due (platform fees/escrow)
  • Domains are offered which are not available at all.
  • Domains are offered for sale, but the seller is difficult or impossible to reach.
  • The purchase has to be handled through a trustee and the domain transfer is relatively simple, but difficult for laymen to manage.
  • Since sometimes considerable sums are involved and the selling parties do not know each other, there is a high risk of fraud.
  • Purchases are often international and therefore a legal protection is difficult / expensive / complex.

Solution

The goal is a trading platform where domains are sold at fixed prices and as soon as a payment is received via the Smart Contract, the domain transfer can be initiated without the seller's intervention. The Smart-Contract keeps the purchase amount in escrow until the buyer has completed the domain transfer. The buyer himself must pay the purchase amount plus a deposit. The deposit will be returned to the buyer after completion of the domain transfer and the purchase via the platform.

If the buyer does not lodge an objection after a time limit, the seller receives his money back and the buyer his deposit. If the buyer confirms the completion of the purchase and does not carry out the transfer, his deposit expires and he gets his purchase amount back.

Challenges

  • The domain transfer must be confirmed by a DNS entry after completion. It must be possible to read the DNS entry unambiguously into the Smart Contract using an oracle. This interface must be fraud-proof.
  • The transfer (Unlock/Transfercode/AK/DNS entry) must still be handled by the buyer - but could be done against a fee from outside.
  • The market may not be interested in price transparency.
  • Even stolen domains can be sold this way.
  • Expansion: Domain auctions are also well feasible via Smart Contracts

Eine Plattform für den Domainhandel über Blockchain

Post in english

Analyse

Der Markt für den Domainhandel ist ein sehr illiquider Markt mit hohen Hürden:

  • Die Preisbildung ist intransparent
  • Es sind hohe Vermittlungsgebühren fällig (Vermittlungsplattformen/Escrow)
  • Es werden Domains angeboten, die gar nicht verfügbar sind.
  • Domains werden zwar zum Kauf angeboten, der Verkäufer ist aber schwer oder gar nicht zu erreichen
  • Der Kauf muss über einen Treuhänder abgewickelt werden und der Domaintransfer ist relative einfach, jedoch für Laien schwer zu bewerkstelligen.
  • Da zum Teil erhebliche Summen im Spiel sind und die Verkaufsparteien sich nicht kennen, ergibt sich es ein hohes Betrugsrisiko.
  • Käufe sind häufig in International und darum ist eine rechtliche Absicherung schwierig / teuer / aufwendig.

Lösung

Ziel ist eine Handelsplattform ist es das Domains zu Fixpreisen verkauft werden und sobald eine Zahlung über den Smart-Contract eingegangen ist, der Domaintransfer ohne Zutun des Verkäufers initiiert werden kann. Der Smart-Contract hält den Kaufbetrag, solange in escrow, bis der Käufer den Domaintransfer abgeschlossen hat. Der Käufer selbst muss den Kaufbetrag plus ein Deposit leisten. Das Deposit erhält er nach Abschluss zurück und bringt den Käufer dazu den Domaintransfer und den Kaufabschluss über die Plattform zu bestätigen.

Legt der Käufer nach einem Zeitlimit keinen Wiederspruch ein, erhält der Verkäufer sein Geld und der Käufer sein Deposit zurück. Bestätigt der Käufer den Kaufabschluss und führt er den Transfer nicht durch, verfällt sein Deposit und er erhält den Kaufbetrag zurück.

Herausforderungen

  • Der Domaintransfer muss nach Abschluss über eine DNS Eintrag bestätigt werden. Der DNS Eintrag muss über ein Orakel in den Smart-Contract eindeutig eingelesen werden können. Diese Schnittstelle muss Betrugsicher sein.
  • Der Transfer (Unlock/Transfercode/AK/DNS Eintrag) muss immer noch vom Käufer abgewickelt werden – könnte aber gegen eine Fee von extern gemacht werden.
  • Der Markt ist vielleicht an Preistransparenz nicht interessiert.
  • Auch geklaute Domains können so verkauft werden.
  • Ausweitung: Auch Domain-Aukionen sind über Smart-Contracts gut machbar

Uniswap – eine dezentralisierte Exchange mit konstantem Produkt Market Maker Model

Tools

Tools for Datainsights

https://uniswap.info
ETH/USDC direct link:
https://uniswap.info/token/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48

ETH/DAI pool:
https://bloxy.info/dexes/0x09cabec1ead1c0ba254b09efb3ee13841712be14

Insight for Liquidity Provider

https://uniswapdex.com
https://www.uniswaproi.com
https://www.defisnap.io/#/uniswap

https://anon-swapper.github.io/uniswap-info/?token=ZRX
https://anon-swapper.github.io/uniswap-info/?token=GRID
https://anon-swapper.github.io/uniswap-info/?token=USDC

https://zumzoom.github.io/analytics/uniswap/

https://defitracker.io/wallet

https://uniswap-roi.herokuapp.com/

Deutsch

Uniswap ist eine dezentralisierte Exchange mit konstantem Produkt Market Maker Model. Dafür wird ein Liquiditätspool benutzt.

Uniswap selbst kostet in der Version 1 keine Gebühren. Jedoch erhalten die Liquididätsprovider 0.3 % pro Transaktion. Bei der Version 2 ist

Geschäftideen:

Ein sehr gutes Interface, dass pro Transaktion 0.1% abzweigt. Ist das technisch möglich?

Fork

Bei dem die Liquididätsprovider nur 0.2 % erhalten und uniswap 0.1% davon? Eher unrealistisch.

Arbitrage

Anbindung an andere DEX und oder auch zentralisierte Exchanges. Braucht Kapital.

Wie man eine neue Exchange bei Uniswap macht

  1. Gehe mit Metamask zu https://uniswap.exchange
  2. Gehe zu "Pool" und wähle dann beim Drop Down (Liquidität hinzufügen)  "Exchange erstellen" (Es steht dann https://uniswap.exchange/create-exchange
  3.  Gib dann die Tokenadresse an. Der Kürzel und die Anzahl stellen werden von selbst gefunden.

Ich habe so die Vetri (VLD) Exchange angelegt:

https://etherscan.io/address/0x922ac473a3cc241fd3a0049ed14536452d58d73c

Dann muss man noch Liquidität hinzufügen

Teilweise verifiziert:

https://github.com/runtimeverification/verified-smart-contracts/blob/uniswap/uniswap/x-y-k.pdf

Weitere Artikel:

https://medium.com/@pintail/uniswap-a-good-deal-for-liquidity-providers-104c0b6816f2

http://meissereconomics.com/2018/12/16/uniswap.html

 

Statistik
https://zumzoom.github.io/analytics/uniswap

Dokumentation
https://docs.uniswap.io

Benuzter-Statistik
https://www.stateofthedapps.com/de/dapps/uniswap

Ethereum Name System (ENS) Anleitung

ENS = Ethereum Name System

Zu welchen Zeitpunkt man einen ENS Domainname registieren kann, ist random, basierend auf den Buchstaben der Domain.

http://docs.ens.domains/en/latest/faq.html#why-does-it-say-my-name-isn-t-available-yet

Alles kann über das myetherwallet.com gemachtwerden.

https://www.myetherwallet.com/#ens

  1. Gebot überweisen
  2. 3 Tage danach das Gebot (bid) aufdecken 'reveal'
  3. Wenn man gewinnt, kann man 2 Tage später den Domain beantragen, wenn nicht, wird zu diesem Zeitpunkt das Gebot zurückbezahlt.

Links:

https://medium.com/the-ethereum-name-service/announcing-the-ethereum-name-service-relaunch-date-4390af6dd9a2

https://gitter.im/ethereum/go-ethereum/name-registry

 

Glossar für Blockchain, Smartcontracts und Cryptowährungen

Fiat

Damit werden Währungen bezeichnet, welche von einem Staat ausgegeben wird. Also $, € oder CHF

ICO

Abkürzung für Initial Coin Offering. Dabei wird eine meist beschränkte Anzahl Coin oder Token meist gegen Bitcoin oder auch Fiat verkauft. Dies dient demProjekt als Mittelbeschaffung, für den Käufer ist es ein Investition.

Scrypt

En: Bitcoins hashing algorithms
De: Hashing Algorithmus von Bitcoin.

SHA-256

E: Bitcoins hashing algorithms
D: Hashing Algorithmus von Bitcoin.

Wallet

English Geldbörse. In dieser Software wird der Coin gespeichert. Kann auch zum Überweisen genutzt werden. Jeder Coin hat eine eigene Wallet, manchmal gibt es sogar mehrere Unterschiedliche.

Crypto Native

En: Somebody who his able to think in Blockchain and has a deep understanding of crypto
De: Jemand der ein breites Verständnis hat in Crypo und in Blockchain denken kann.

Gnosis (GNO)

Projects

Gnosis Protocol: A fully permissionless DEX that enables ring trades to maximize liquidity.

https://docs.gnosis.io/protocol/

Data Insight for Gnosis Protocol:
https://explore.duneanalytics.com/public/dashboards/rcX1DQDpyjneFYuHtw7WDcgQEuXlL7FQt6iny79t

Implimentation of Gnosis Protocol:

https://mesa.eth.link/

Data Insight: https://explore.duneanalytics.com/public/dashboards/GjrWxuYB6UIawCC1MvmfmFlfHsQQzUo3hwTrmR7l

reddit.com
https://www.reddit.com/r/gnosisPM/

redditmetrics.com
http://redditmetrics.com/r/gnosisPM

Website
https://gnosis.pm/

Blog
https://blog.gnosis.pm/

Code
GNO

melonport (MLN)

Melonport AG löst sich auf im Januar 2019:

https://medium.com/melonport-blog/introduction-to-the-melon-governance-system-f6ff73c70eb0

Ethereum bassierte Fund Manager Protokol

http://monitoring.melon.network

ICO

Es wurden 227,000 ETH innerhalb von 20 minuten verkauft. 

 

Quelle: https://www.smithandcrown.com/melonport-token-sale/

 

The price was set at 2.2 MLN/ETH, setting a cap on the raise of 227000 ETH, roughly $2.9 million with ETH price at $12.8.

The price was set at 2.2 MLN/ETH, setting a cap on the raise of 227000 ETH, roughly $2.9 million with ETH price at $12.8.

 

 

Melonport raised almost $3 million in its first token sale. It hit its cap of 227,000 ETH within 10 minutes, attesting to the popularity of the protocol and the momentum its team has built. Tokens will be available for trading in four weeks.

Offiziell:

Specs

Ethereum bassierte Cryptowährung.  749'400 MLN sind vorhanden.

News

2.2.2017http://www.handelszeitung.ch/blogs/bits-coins/die-frau-mit-den-neuen-blockchain-fonds-1331738

Blockexplorer

https://etherscan.io/token/Melon

Wert am 14.3.2017:
ca. 0.05 BTC  ~ $ 60
Marketcap:   749400*0.05*1250 = $ 46'837'500 (Golem hat ein Marketcap von 20'000'000)

Wert am 15.3.2017, jetzt werde die Tokens handelbar

ca. 0.015 BTC  ~ $ 18.75

Marketcap:   749400*0.015*1250 = $ 14'051'250 (Golem hat ein Marketcap von 20'000'000)

 

Wird gehandelt auf liqui.io/#/exchange/MLN_BTC

Code
MLN

EterscanToken
https://etherscan.io/token/Melon

Website
https://melonport.com

Blog
https://medium.com/melonport-blog