Skip to main content
replaced http://ethereum.stackexchange.com/ with https://ethereum.stackexchange.com/
Source Link
Grammar
Source Link
BokkyPooBah
  • 40.4k
  • 14
  • 123
  • 193
  1. The attacker creates a wallet contract (0xc0ee9db1a9e07ca63e4ff0d5fb6f86bf68d47b89 in the 17/06/2016 attack) with a default (or fallback) function () to call The DAO's splitDAO(...) function a number of times. Following is a simple default function ():

     function () {
        // Note that the following statement can only be called recursively
        // a limited number of times to prevent running out of gas or
        // exceeding the call stack
        call TheDAO.splitDAO(...)
     }
    
  2. The attacker creates (or joins) a split proposal (#59 in the 17/06/2016 attack) with the recipient address beginbegin set to the wallet contract created above.

  3. The attacker votes Yes on the split proposal.

  4. After the split proposal expires, the attacker calls The DAO's splitDAO(...) function.

    a. The splitDAO(...) function calls the wallet contract's default function () as part of sending the ethers to the recipient.

    b. The wallet contract's default function () calls The DAO's splitDAO(...) again, which repeats the cycle from a. above.

    c. The wallet contract's default function () must ensure that an error is not thrown as the transactions will be rolled back if the call stack or gas is exceeded.

  1. The attacker creates a wallet contract (0xc0ee9db1a9e07ca63e4ff0d5fb6f86bf68d47b89 in the 17/06/2016 attack) with a default (or fallback) function () to call The DAO's splitDAO(...) function a number of times. Following is a simple default function ():

     function () {
        // Note that the following statement can only be called recursively
        // a limited number of times to prevent running out of gas or
        // exceeding the call stack
        call TheDAO.splitDAO(...)
     }
    
  2. The attacker creates (or joins) a split proposal (#59 in the 17/06/2016 attack) with the recipient address begin the wallet contract created above.

  3. The attacker votes Yes on the split proposal.

  4. After the split proposal expires, the attacker calls The DAO's splitDAO(...) function.

    a. The splitDAO(...) function calls the wallet contract's default function () as part of sending the ethers to the recipient.

    b. The wallet contract's default function () calls The DAO's splitDAO(...) again, which repeats the cycle from a. above.

    c. The wallet contract's default function () must ensure that an error is not thrown as the transactions will be rolled back if the call stack or gas is exceeded.

  1. The attacker creates a wallet contract (0xc0ee9db1a9e07ca63e4ff0d5fb6f86bf68d47b89 in the 17/06/2016 attack) with a default (or fallback) function () to call The DAO's splitDAO(...) function a number of times. Following is a simple default function ():

     function () {
        // Note that the following statement can only be called recursively
        // a limited number of times to prevent running out of gas or
        // exceeding the call stack
        call TheDAO.splitDAO(...)
     }
    
  2. The attacker creates (or joins) a split proposal (#59 in the 17/06/2016 attack) with the recipient address begin set to the wallet contract created above.

  3. The attacker votes Yes on the split proposal.

  4. After the split proposal expires, the attacker calls The DAO's splitDAO(...) function.

    a. The splitDAO(...) function calls the wallet contract's default function () as part of sending the ethers to the recipient.

    b. The wallet contract's default function () calls The DAO's splitDAO(...) again, which repeats the cycle from a. above.

    c. The wallet contract's default function () must ensure that an error is not thrown as the transactions will be rolled back if the call stack or gas is exceeded.

tiry
Source Link
BokkyPooBah
  • 40.4k
  • 14
  • 123
  • 193
Added link to Analysis of the DAO exploit
Source Link
BokkyPooBah
  • 40.4k
  • 14
  • 123
  • 193
Loading
tidy
Source Link
BokkyPooBah
  • 40.4k
  • 14
  • 123
  • 193
Loading
Spelling
Source Link
BokkyPooBah
  • 40.4k
  • 14
  • 123
  • 193
Loading
Added link to The big theDAO heist FAQ
Source Link
BokkyPooBah
  • 40.4k
  • 14
  • 123
  • 193
Loading
Improvement
Source Link
BokkyPooBah
  • 40.4k
  • 14
  • 123
  • 193
Loading
Tidy
Source Link
BokkyPooBah
  • 40.4k
  • 14
  • 123
  • 193
Loading
Improvement
Source Link
BokkyPooBah
  • 40.4k
  • 14
  • 123
  • 193
Loading
Improvement
Source Link
BokkyPooBah
  • 40.4k
  • 14
  • 123
  • 193
Loading
Improvement
Source Link
BokkyPooBah
  • 40.4k
  • 14
  • 123
  • 193
Loading
Added one resource
Source Link
BokkyPooBah
  • 40.4k
  • 14
  • 123
  • 193
Loading
Improvement
Source Link
BokkyPooBah
  • 40.4k
  • 14
  • 123
  • 193
Loading
Improvement
Source Link
BokkyPooBah
  • 40.4k
  • 14
  • 123
  • 193
Loading
Added specific The DAO code
Source Link
BokkyPooBah
  • 40.4k
  • 14
  • 123
  • 193
Loading
Improvement
Source Link
BokkyPooBah
  • 40.4k
  • 14
  • 123
  • 193
Loading
Tidy
Source Link
BokkyPooBah
  • 40.4k
  • 14
  • 123
  • 193
Loading
Tidy
Source Link
BokkyPooBah
  • 40.4k
  • 14
  • 123
  • 193
Loading
Source Link
BokkyPooBah
  • 40.4k
  • 14
  • 123
  • 193
Loading