Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions client/src/containers/Header.js
Original file line number Diff line number Diff line change
Expand Up @@ -242,6 +242,7 @@ class Header extends React.Component {
tr: strings.turkish,
uk: strings.ukrainian,
ko: strings.korean,
hu: strings.hungarian,
};

const ddOpen = Boolean(this.state.multiDDOpen);
Expand Down
5 changes: 5 additions & 0 deletions client/src/gamedata/hu/descriptions/levels/coinflip.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Ez egy pénzfeldobós játék, ahol feldobási sorozatot kell építened azáltal, hogy kitalálod a pénzfeldobás eredményét. A szint befejezéséhez pszichikai képességeidet kell használnod, hogy 10-szer egymás után kitaláld a helyes eredményt.

 
Dolgok, amelyek segíthetnek
* Lásd a ["?"](https://ethernaut.openzeppelin.com/help) oldalt fent a jobb felső sarokban a menüben, "A konzolon túl" szekció
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
Véletlen számok generálása Solidity-ben trükkös lehet. Jelenleg nincs natív módja a generálásuknak, és minden, amit az okosszerződésekben használsz, nyilvánosan látható, beleértve a lokális változókat és az privátként megjelölt állapotváltozókat is. A bányászok szintén kontrollálják az olyan dolgokat, mint a blokkhashe-k, időbélyegek és azt, hogy bizonyos tranzakciókat belevennek-e - ami lehetővé teszi számukra, hogy ezeket az értékeket a javukra hajlítsák.

Kriptográfiailag bizonyított véletlen számok beszerzéséhez használhatod a [Chainlink VRF](https://docs.chain.link/docs/get-a-random-number)-et, amely egy orákulum-ot, a LINK tokent és egy on-chain szerződést használ annak ellenőrzésére, hogy a szám valóban véletlen.

Néhány egyéb lehetőség közé tartozik a Bitcoin blokk fejlécek használata ([BTC Relay](http://btcrelay.org)-n keresztül ellenőrizve), [RANDAO](https://github.com/randao/randao), vagy [Oraclize](http://www.oraclize.it/)).

7 changes: 7 additions & 0 deletions client/src/gamedata/hu/descriptions/levels/delegate.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
Ennek a szintnek a célja, hogy megszerezd a kapott példány tulajdonjogát.

 
Dolgok, amelyek segíthetnek
* Nézd meg a Solidity dokumentációját a `delegatecall` alacsony szintű függvényről, hogyan működik, hogyan használható műveleteknek on-chain könyvtárakhoz való delegálására, és milyen következményei vannak a végrehajtási hatókörre.
* Fallback metódusok
* Metódus azonosítók
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
A `delegatecall` használata különösen kockázatos, és több történelmi hackben támadási vektorként használták. Ezzel a szerződésed gyakorlatilag azt mondja: "itt van, -másik szerződés- vagy -másik könyvtár-, csinálj amit akarsz az állapotommal". A delegáltaknak teljes hozzáférésük van a szerződésed állapotához. A `delegatecall` függvény egy erőteljes funkció, de veszélyes, és rendkívüli óvatossággal kell használni.


Kérlek nézd meg [A Parity Wallet Hack magyarázata](https://blog.openzeppelin.com/on-the-parity-wallet-multisig-hack-405a8c12e8f7) cikket egy pontos magyarázatért, hogyan használták ezt az ötletet 30 millió USD ellopására.

5 changes: 5 additions & 0 deletions client/src/gamedata/hu/descriptions/levels/elevator.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Ez a lift nem fogja hagyni, hogy elérd az épületed tetejét. Ugye?

##### Dolgok, amelyek segíthetnek:
* Néha a Solidity nem jó az ígéretek betartásában.
* Ez az `Elevator` elvárja, hogy egy `Building`-ből használják.
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Használhatod a `view` függvény módosítót egy interfészen, hogy megakadályozd az állapot módosításokat. A `pure` módosító szintén megakadályozza a függvényeket az állapot módosításában.
Győződj meg róla, hogy elolvasod a [Solidity dokumentációját](http://solidity.readthedocs.io/en/develop/contracts.html#view-functions) és megtanulod a buktatóit.

Egy alternatív módja ennek a szintnek a megoldására egy olyan view függvény építése, amely különböző eredményeket ad vissza a bemeneti adatoktól függően, de nem módosítja az állapotot, pl. `gasleft()`.
12 changes: 12 additions & 0 deletions client/src/gamedata/hu/descriptions/levels/fallback.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
Nézd meg figyelmesen a szerződés kódját lent.

Akkor nyered meg ezt a szintet, ha
1) megszerezed a szerződés tulajdonjogát
2) csökkented az egyenlegét 0-ra

 
Dolgok, amelyek segíthetnek
* Hogyan küldjünk ethert az ABI-val való interakció során
* Hogyan küldjünk ethert az ABI-n kívül
* Wei/ether egységek közötti konverzió (lásd a `help()` parancsot)
* Fallback metódusok
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Tudod az alapokat arról, hogyan megy be és ki az ether a szerződésekből, beleértve a fallback metódus használatát is.

Megtanultad az OpenZeppelin Ownable szerződését is, és hogy hogyan használható bizonyos metódusok használatának korlátozására egy kiváltságos címre.

Lépj tovább a következő szintre, amikor készen állsz!
5 changes: 5 additions & 0 deletions client/src/gamedata/hu/descriptions/levels/fallout.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Szerezd meg a lenti szerződés tulajdonjogát a szint befejezéséhez.

 
Dolgok, amelyek segíthetnek
* Solidity Remix IDE
15 changes: 15 additions & 0 deletions client/src/gamedata/hu/descriptions/levels/fallout_complete.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
Ez elég buta volt, nem? A valós világbeli szerződéseknek sokkal biztonságosabbnak kell lenniük ennél, és sokkal nehezebbnek kell lennie őket feltörni, igaz?

Nos... Nem egészen.

A Rubixi története egy nagyon ismert eset az Ethereum ökoszisztémában. A cég megváltoztatta a nevét 'Dynamic Pyramid'-ről 'Rubixi'-re, de valahogy nem nevezték át a szerződésük konstruktor metódusát:

```
contract Rubixi {
address private owner;
function DynamicPyramid() { owner = msg.sender; }
function collectAllFees() { owner.transfer(this.balance) }
...
```

Ez lehetővé tette a támadónak, hogy meghívja a régi konstruktort és megszerezze a szerződés tulajdonjogát, valamint ellopjon néhány pénzeszközt. Igen. Nagy hibák követhetők el az okosszerződések világában.
9 changes: 9 additions & 0 deletions client/src/gamedata/hu/descriptions/levels/force.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
Néhány szerződés egyszerűen nem fogadja el a pénzed `¯\_(ツ)_/¯`

Ennek a szintnek a célja, hogy a szerződés egyenlege nagyobb legyen, mint nulla.

 
Dolgok, amelyek segíthetnek:
* Fallback metódusok
* Néha a legjobb módja egy szerződés megtámadásának egy másik szerződéssel történik.
* Lásd a ["?"](https://ethernaut.openzeppelin.com/help) oldalt fent, "A konzolon túl" szekció
4 changes: 4 additions & 0 deletions client/src/gamedata/hu/descriptions/levels/force_complete.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
A Solidity-ben, hogy egy szerződés tudjon ethert fogadni, a fallback függvényt `payable`-ként kell megjelölni.

Azonban nincs módja megakadályozni, hogy egy támadó ethert küldjön egy szerződésnek önmegsemmisítéssel. Ezért fontos, hogy ne számíts az `address(this).balance == 0` invariánsra semmilyen szerződési logikában.

6 changes: 6 additions & 0 deletions client/src/gamedata/hu/descriptions/levels/gatekeeper1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
Juttatd túl a kapuőrt és regisztrálj belépőként a szint teljesítéséhez.

##### Dolgok, amelyek segíthetnek:
* Emlékezz arra, amit a Telephone és Token szinteken tanultál.
* Többet tanulhatsz a speciális `gasleft()` függvényről a Solidity dokumentációjában (lásd [Units and Global Variables](https://docs.soliditylang.org/en/v0.8.3/units-and-global-variables.html) és [External Function Calls](https://docs.soliditylang.org/en/v0.8.3/control-structures.html#external-function-calls)).

Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Szép munka! Most próbálkozz a második kapuőrrel...
6 changes: 6 additions & 0 deletions client/src/gamedata/hu/descriptions/levels/gatekeeper2.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
Ez a kapuőr néhány új kihívást vezet be. Regisztrálj belépőként a szint teljesítéséhez.

##### Dolgok, amelyek segíthetnek:
* Emlékezz arra, amit tanultál az első kapuőr megkerüléséből - az első kapu ugyanaz.
* Az `assembly` kulcsszó a második kapuban lehetővé teszi egy szerződésnek, hogy hozzáférjen olyan funkcionalitáshoz, amely nem natív a vanilla Solidity-ben. Lásd [Solidity Assembly](http://solidity.readthedocs.io/en/v0.4.23/assembly.html) további információkért. Az `extcodesize` hívás ebben a kapuban megkapja egy szerződés kódjának méretét egy adott címen - többet tanulhatsz arról, hogyan és mikor van ez beállítva a [yellow paper](https://ethereum.github.io/yellowpaper/paper.pdf) 7. szakaszában.
* A `^` karakter a harmadik kapuban egy bitwise művelet (XOR), és itt használják egy másik gyakori bitwise művelet alkalmazására (lásd [Solidity cheatsheet](http://solidity.readthedocs.io/en/v0.4.23/miscellaneous.html#cheatsheet)). A Coin Flip szint szintén jó kiindulópont ennek a kihívásnak a megközelítésekor.
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Remek munka! Most, hogy túljutottál a kapuőrön, megvan benned, ami kell a [theCyber](https://etherscan.io/address/thecyber.eth#code)-hez való csatlakozáshoz, egy decentralizált klub az Ethereum mainnet-en. Szerezz egy jelmondatot a készítő megkeresésével [reddit](https://www.reddit.com/user/0age)-en vagy [email](mailto:0age@protonmail.com)-en keresztül, és használd azt a regisztrációhoz a szerződésnél a [gatekeepertwo.thecyber.eth](https://etherscan.io/address/gatekeepertwo.thecyber.eth#code) címen (vedd figyelembe, hogy csak az első 128 belépőt fogadja el a szerződés).
69 changes: 69 additions & 0 deletions client/src/gamedata/hu/descriptions/levels/instances.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
Ez a szint végigvezet a játék alapjain.

 
#### 1. MetaMask beállítása
Ha még nincs meg, telepítsd a [MetaMask böngésző bővítményt](https://metamask.io/) (Chrome-ban, Firefox-ban, Brave-ben vagy Opera-ban asztali gépeden).
Állítsd be a bővítmény tárcáját és használd a hálózat választót, hogy a preferált hálózatra mutathasson a bővítmény felületének bal felső sarkában. Alternatívaként használhatod a UI gombot a hálózatok közötti váltáshoz. Ha nem támogatott hálózatot választasz, a játék értesít és elvisz az alapértelmezett Sepolia testnet-re.

#### 2. Nyisd meg a böngésző konzolját
Nyisd meg a böngésző konzolját: `Eszközök > Fejlesztői eszközök`.

Látnod kell néhány üzenetet a játéktól. Az egyiknek ki kellene írnia a játékos címedet. Ez fontos lesz a játék során! Mindig megnézheted a játékos címedet a következő paranccsal:

`player`

Figyelj az figyelmeztetésekre és hibákra, mert fontos információkat nyújthatnak a játékmenet során.

#### 3. Használd a konzol segédprogramokat

Az aktuális ether egyenlegedet is megnézheted beírva:

`getBalance(player)`

###### MEGJEGYZÉS: Bontsd ki a promise-t, hogy lásd a valódi értéket, még ha "pending"-et ír is. Ha Chrome v62-t használsz, használhatod az `await getBalance(player)` parancsot tisztább konzol élményért.

Nagyszerű! Hogy lásd, milyen más hasznos függvényeid vannak a konzolon, írd be:

`help()`

Ezek szuper hasznosak lesznek a játékmenet során.

#### 4. Az ethernaut szerződés
Add meg a következő parancsot a konzolon:

`ethernaut`

Ez a játék fő okosszerződése. Nem kell közvetlenül interakcióba lépned vele a konzolon keresztül (mivel ezt az alkalmazás megteszi helyetted), de megteheted, ha szeretnéd. Az objektummal való játszadozás most nagyszerű módja annak, hogy megtanuld, hogyan lépj interakcióba a játék többi okosszerződésével.

Bontsd ki az ethernaut objektumot, hogy lásd, mi van benne.

#### 5. Interakció az ABI-val
Az `ethernaut` egy `TruffleContract` objektum, amely becsomagolja az `Ethernaut.sol` szerződést, amelyet telepítettek a blokkláncra.

Többek között a szerződés ABI-ja elérhetővé teszi az `Ethernaut.sol` összes publikus metódusát, mint például az `owner`. Írd be például a következő parancsot:

`ethernaut.owner()` vagy `await ethernaut.owner()` ha Chrome v62-t használsz.

Láthatod, ki az ethernaut szerződés tulajdonosa.

#### 6. Szerezz teszt ethert
A játék játszásához teszt etherre lesz szükséged. A legegyszerűbb módja a testnet ether megszerzésének egy érvényes faucet a választott hálózatodhoz.

Amint látsz néhány érmét az egyenlegedben, lépj tovább a következő lépésre.

#### 7. Szint példány megszerzése
Amikor egy szintet játszol, nem közvetlenül az ethernaut szerződéssel lépsz interakcióba. Ehelyett megkéred, hogy generáljon egy **szint példányt** neked. Ehhez kattints a "Új példány kérése" gombra az oldal alján. Tedd meg most és gyere vissza!

A MetaMask-nak kérnie kell, hogy engedélyezd a tranzakciót. Tedd meg, és látnod kell néhány üzenetet a konzolon. Vedd figyelembe, hogy ez egy új szerződést telepít a blokkláncra, és eltarthat néhány másodpercig, szóval légy türelmes, amikor új szint példányokat kérsz!

#### 8. A szerződés vizsgálata
Ahogy az ethernaut szerződéssel tetted, megvizsgálhatod ennek a szerződésnek az ABI-ját a konzolon keresztül a `contract` változóval.

#### 9. Lépj interakcióba a szerződéssel a szint befejezéséhez
Nézd meg a szint info metódusát: `contract.info()` vagy `await contract.info()` ha Chrome v62-t használsz.
Minden szükséges információval rendelkezel a szint befejezéséhez a szerződésen belül.
Amikor tudod, hogy befejezted a szintet, küldd be a szerződést a beküldés gombbal az oldal alján.
Ez visszaküldi a példányodat az ethernaut-nak, amely meghatározza, hogy befejezted-e.


##### Tipp: ne felejtsd el, hogy mindig megnézheted a szerződés ABI-ját!
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
Gratulálunk! Befejezted az oktatóprogramot.
Nézd meg a Solidity kódot a szerződéshez, amellyel most interakcióba léptél, lent.

Most már készen állsz a játék összes szintjének befejezésére, és mostantól egyedül vagy.

Isten veled!!
5 changes: 5 additions & 0 deletions client/src/gamedata/hu/descriptions/levels/king.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Az alábbi szerződés egy nagyon egyszerű játékot képvisel: aki olyan mennyiségű ethert küld neki, amely nagyobb, mint a jelenlegi nyeremény, az lesz az új király. Egy ilyen eseménynél a megdöntött király megkapja az új nyereményt, így egy kis ethert keres a folyamatban! Olyan ponzi, amilyen csak lehet xD

Milyen szórakoztató játék. A célod, hogy összetörd.

Amikor visszaküldöd a példányt a szintnek, a szint vissza fogja szerezni a királyságot. Akkor nyered meg a szintet, ha el tudod kerülni egy ilyen önkikiáltást.
3 changes: 3 additions & 0 deletions client/src/gamedata/hu/descriptions/levels/king_complete.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
Az Ethernaut szintjeinek többsége megpróbál (természetesen túlegyszerűsített formában) valamit bemutatni, ami valóban megtörtént — egy igazi hackot vagy egy igazi hibát.

Ebben az esetben lásd: [King of the Ether](https://www.kingoftheether.com/thrones/kingoftheether/index.html) és [King of the Ether Postmortem](http://www.kingoftheether.com/postmortem.html).
6 changes: 6 additions & 0 deletions client/src/gamedata/hu/descriptions/levels/naughtcoin.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
A NaughtCoin egy ERC20 token, és már mind nálad van. A bökkenő az, hogy csak egy 10 éves zárási időszak után tudod átvinni őket. Ki tudod találni, hogyan viheted át őket egy másik címre, hogy szabadon átvihesd őket? Teljesítsd ezt a szintet úgy, hogy a token egyenleged 0 lesz.

 
Dolgok, amelyek segíthetnek
* Az [ERC20](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md) specifikáció
* Az [OpenZeppelin](https://github.com/OpenZeppelin/zeppelin-solidity/tree/master/contracts) kódbázis
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Amikor olyan kódot használsz, ami nem a tiéd, jó ötlet megismerkedni vele, hogy jó megértést szerezz arról, hogyan illik össze minden. Ez különösen fontos lehet, amikor több szintű importok vannak (az importjaidnak vannak importjai), vagy amikor authorizációs kontrollokat implementálsz, pl. amikor engedélyezed vagy tiltod az embereket bizonyos dolgok megtételében. Ebben a példában egy fejlesztő átfuthatja a kódot és azt gondolhatja, hogy a `transfer` az egyetlen módja a tokenek mozgatásának, és íme, vannak más módok is ugyanazon művelet végrehajtására más implementációval.
11 changes: 11 additions & 0 deletions client/src/gamedata/hu/descriptions/levels/privacy.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
Ennek a szerződésnek a készítője elég óvatos volt, hogy megvédje a tárolásának érzékeny területeit.

Nyisd ki ezt a szerződést a szint megnyeréséhez.

Dolgok, amelyek segíthetnek:
* A tárolás működésének megértése
* A paraméter elemzés működésének megértése
* A típuskonverzió működésének megértése

Tippek:
* Ne feledd, hogy a metamask csak egy kényelmi eszköz. Használj másik eszközt, ha problémákat okoz. A haladó játékmenet magában foglalhatja a remix vagy a saját web3 provider használatát.
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
Semmi sem privát az Ethereum blokkláncban. A private kulcsszó csupán a Solidity nyelv mesterséges konstrukciója. A Web3 `getStorageAt(...)` használható bárminek a tárolásból való olvasására. Trükkös lehet elolvasni amit akarsz, mivel számos optimalizálási szabály és technika kerül felhasználásra, hogy a tárolást amennyire csak lehet, tömörítsék.

Nem lehet sokkal bonyolultabb annál, mint ami ebben a szintben bemutatásra került. Továbbiak itt: [How to read Ethereum contract storage](https://medium.com/aigang-network/how-to-read-ethereum-contract-storage-44252c8af925) szerző: "Darius"
9 changes: 9 additions & 0 deletions client/src/gamedata/hu/descriptions/levels/reentrancy.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
Ennek a szintnek a célja, hogy ellopd az összes pénzeszközt a szerződésből.

 
Dolgok, amelyek segíthetnek:
* A nem megbízható szerződések kódot futtathatnak ott, ahol legkevésbé várod.
* Fallback metódusok
* Throw/revert buborékozás
* Néha a legjobb módja egy szerződés megtámadásának egy másik szerződéssel történik.
* Lásd a ["?"](https://ethernaut.openzeppelin.com/help) oldalt fent, "A konzolon túl" szekció
12 changes: 12 additions & 0 deletions client/src/gamedata/hu/descriptions/levels/reentrancy_complete.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
A visszatérési támadások (re-entrancy) megelőzése érdekében, amikor pénzeszközöket mozgatsz ki a szerződésedből, használd a [Checks-Effects-Interactions mintát](https://solidity.readthedocs.io/en/develop/security-considerations.html#use-the-checks-effects-interactions-pattern), figyelembe véve, hogy a `call` csak false-t ad vissza anélkül, hogy megszakítaná a végrehajtási folyamatot. Olyan megoldások is használhatók, mint a [ReentrancyGuard](https://docs.openzeppelin.com/contracts/2.x/api/utils#ReentrancyGuard) vagy a [PullPayment](https://docs.openzeppelin.com/contracts/2.x/api/payment#PullPayment).

A `transfer` és a `send` már nem ajánlott megoldások, mivel potenciálisan elronthatják a szerződéseket az Istanbul hard fork után [Forrás 1](https://diligence.consensys.net/blog/2019/09/stop-using-soliditys-transfer-now/) [Forrás 2](https://forum.openzeppelin.com/t/reentrancy-after-istanbul/1742).

Mindig feltételezd, hogy a pénzeszközök fogadója, amelyet küldesz, lehet egy másik szerződés, nem csak egy normál cím. Ezért kódot futtathat a payable fallback metódusában és *újra beléphet* a szerződésedbe, esetleg összezavarva az állapotodat/logikádat.

A visszatérés (re-entrancy) gyakori támadás. Mindig készülj fel rá!

 
#### A DAO Hack

A híres DAO hack visszatérést használt, hogy hatalmas mennyiségű ethert vonjon ki az áldozat szerződésből. Lásd [15 sor kód, amely megakadályozhatta volna a DAO Hack-et](https://blog.openzeppelin.com/15-lines-of-code-that-could-have-prevented-thedao-hack-782499e00942).
5 changes: 5 additions & 0 deletions client/src/gamedata/hu/descriptions/levels/shop.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Meg tudod szerezni a tárgyat a boltból kevesebbért, mint a kért ár?

##### Dolgok, amelyek segíthetnek:
* A `Shop` elvárja, hogy egy `Buyer`-ből használják
* A view függvények korlátozásainak megértése
3 changes: 3 additions & 0 deletions client/src/gamedata/hu/descriptions/levels/shop_complete.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
A szerződések bármilyen módon manipulálhatják a más szerződések által látott adatokat, ahogy akarják.

Nem biztonságos megváltoztatni az állapotot külső és nem megbízható szerződési logika alapján.
5 changes: 5 additions & 0 deletions client/src/gamedata/hu/descriptions/levels/telephone.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Szerezd meg a lenti szerződés tulajdonjogát a szint befejezéséhez.

 
Dolgok, amelyek segíthetnek
* Lásd a ["?"](https://ethernaut.openzeppelin.com/help) oldalt fent, "A konzolon túl" szekció
21 changes: 21 additions & 0 deletions client/src/gamedata/hu/descriptions/levels/telephone_complete.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
Bár ez a példa egyszerű lehet, a `tx.origin` és a `msg.sender` összekeverése adathalász-szerű támadásokhoz vezethet, mint például [ez](https://blog.ethereum.org/2016/06/24/security-alert-smart-contract-wallets-created-in-frontier-are-vulnerable-to-phishing-attacks/).

Egy lehetséges támadás példája az alábbiakban látható.

1) Használd a `tx.origin`-t annak meghatározására, kinek a tokenjeit kell átutalni, pl.

```
function transfer(address _to, uint _value) {
tokens[tx.origin] -= _value;
tokens[_to] += _value;
}
```
2) A támadó ráveszi az áldozatot, hogy pénzt küldjön egy rosszindulatú szerződésnek, amely meghívja a token szerződés átutalási funkcióját, pl.

```
function () payable {
token.transfer(attackerAddress, 10000);
}
```

3) Ebben a forgatókönyvben a `tx.origin` az áldozat címe lesz (míg a `msg.sender` a rosszindulatú szerződés címe lesz), aminek eredményeként a pénzeszközök az áldozattól a támadóhoz kerülnek.
Loading