Rvmust not be WETH or CIG`HStogie: INVALID_SIGNATURERvmust not be WETH or CIG`HYou cannot deposit only 0 tokens`D[PPPPPPPPPPPPV[`PPPPPPPPPPPPPPV[`_ERC20TransferFrom failed_ERC20TransferFrom did not succe`D_ERC20Transfer failed did not su`DERC20: mint to the zero addressRqBalance is too low`p
Rvmust not be WETH or CIG`HStogie: INVALID_SIGNATURERvmust not be WETH or CIG`HYou cannot deposit only 0 tokens`D[PPPPPPPPPPPPV[`PPPPPPPPPPPPPPV[`_ERC20TransferFrom failed_ERC20TransferFrom did not succe`D_ERC20Transfer failed did not su`DERC20: mint to the zero addressRqBalance is too low`p
# Buy an Alien CryptoPunk using stETH
## Summary
Since most of the treasury has been converted to stETH, the previews proposal to acquire an Alien punk had to be cancelled.
Here I, tycoon.eth, prepared a smart contract that will help the Nouns DAO to acquire an Alien punk token using stETH.
## Methodology
The contract has been deployed to [0x0260Ba2dAe8b85b5A1Bd492829738BDCC7956F35](https://etherscan.io/address/0x0260ba2dae8b85b5a1bd492829738bdcc7956f35#code)
The contract would receive stETH from the treasury and hold it for up to 69 days. In the meantime, any Alien CryptoPunk owner could sell their punk to the contract, in exchange for the balance of the contract’s stETH. The Alien owner would need to use the “Offer to Address” feature for selling the punk to the contract. After settlement, the punk token will be sent to the Nouns DAO treasury address. If the deal is not closed within 69 days, the entire stETH balance will be sent back to the Nouns DAO treasury.
A walkthrough of the code has been posted here [https://0xtycoon.medium.com/nounsalien-solidity-contract-walkthrough-9233a4b9ee4e](https://0xtycoon.medium.com/nounsalien-solidity-contract-walkthrough-9233a4b9ee4e)
The contract has been simulated on block 17781581 using this simulation test posted to Github [https://github.com/0xTycoon/alien-flip/blob/master/test/simulate.js](https://github.com/0xTycoon/alien-flip/blob/master/test/simulate.js)
"trait_type": "Type","trait_type": "Accessory",invalid _tokenId{
"description": "CryptoPunks la`unched as a fixed set of 10,000 ` items in mid-2017 and became one`@ of the inspirations for the ERC``-721 standard. They have been fe`atured in places like The New Yo`rk Times, Christies of London, Art|Basel Miami, an`d The PBS NewsHour.","external_url": "https://cryptop`unks.app/cryptopunks/details/"image": "data:image/svg+xml;bas`"name": "CryptoPunk #data:application/json;base64,ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
"trait_type": "Type","trait_type": "Accessory",invalid _tokenId{
"description": "CryptoPunks la`unched as a fixed set of 10,000 ` items in mid-2017 and became one`@ of the inspirations for the ERC``-721 standard. They have been fe`atured in places like The New Yo`rk Times, Christies of London, Art|Basel Miami, an`d The PBS NewsHour.","external_url": "https://cryptop`unks.app/cryptopunks/details/"image": "data:image/svg+xml;bas`"name": "CryptoPunk #data:application/json;base64,ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
"trait_type": "Type","trait_type": "Accessory",invalid _tokenId{
"description": "CryptoPunks la`unched as a fixed set of 10,000 ` items in mid-2017 and became one`@ of the inspirations for the ERC``-721 standard. They have been fe`atured in places like The New Yo`rk Times, Christies of London, Art|Basel Miami, an`d The PBS NewsHour.","external_url": "https://cryptop`unks.app/cryptopunks/details/"image": "data:image/svg+xml;bas`"name": "CryptoPunk #ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
no such bribe activeinvalid bribe statemust be CEO for at least x block`Dbribe must be proposedmust own the punk in proposal₂a*-V[P[PPPV[`no bribe acceptedtimestamp must not equalbribesProposed at _i not emptyacceptedBribe not PaidOuta bribe is currently acceptedno such bribe activemust be called by the CEOmust be CEO for at least x block`Dno such bribe in bribesExpiredno such bribe in bribesProposedmust be accepted for payoutbribesExpired slot not empty
acceptedBribe not PaidOuta bribe is currently acceptedno such bribe activemust be called by the CEOmust be CEO for at least x block`D_j must be expiredexpected _j to defunctmust be proposedbribesProposed at _i not emptymust be CEO for at least x block`Dno bribe acceptedtimestamp must not equalno such bribe activebribe must be proposedmust own the punk in proposalno such bribe activecannot be expiredinvalid bribe statemust be accepted for payoutbribesExpired slot not empty
Only admin can call thiscannot end migration yetAs CEO I declare Dec 22 Punk Day` First punks tokenpunk already claimedpunk already claimedonly CEO can call thisinsufficient taxOnly admin can call thispool already setonly CEO can call thisNo CEO in chargewait more blocksreward already maxa#ᑐaKvV[a#두aK^V[Only admin can call thisonly CEO can call thisNo CEO in chargeprice would defaultYou cannot deposit only 0 tokens`DOnly admin can call thisonly CEO can call thisNo CEO in chargewait more blocksreward already lowERC20: mint to the zero addressaCߑaL8V[aC鑐aKBalance is too lowinsert more tobacco leaves...
CEO of CryptoPunksmust be called from cigtokenmust be called from cigtokenmust be called by CEOonly admin can call thismust be called from cigtokenonly admin can call thisonly admin can call thisipfs://QmSS3umdraDF5gw3ri5b1ZhZ9dKn9iSY8bQVksLqjvUqHW/
TheDAO SEC Report NFTindex out of rangeindex out of rangeaction not token permittednot upgradable idcannot send to dead addresscannot send to selfcannot send to 0xindex out of range_from must be ownerindex out of rangetoken not assignedcannot send to dead addresscannot send to selfcannot send to 0xindex out of range_from must be ownerERC721: transfer to non ERC721Re`Dceiver implementeronly owner can burnindex out of rangeonly curator can call thisindex out of rangeDAO deposit insufficientDAO fee insufficientminting finishedmust be between 1 and 100DAO tokens requiredERC721: approve to callercannot send to dead addresscannot send to selfcannot send to 0xindex out of range_from must be ownerERC721: transfer to non ERC721Re`Dceiver implementerindex out of rangeonly curator can call thisERC721: transfer to non ERC721Re`Dceiver implementer3ed52e4afc9030f69004f163017c3ffba0b837d90061437328af87330dee95756c9ae041b9b9603da01d0aa4d912586c8d85b9fe1932c57f988d8bd0f9da3bc7
index out of rangeindex out of rangeaction not token permittedcannot send to dead addresscannot send to selfcannot send to 0xindex out of range_from must be ownerindex out of rangetoken not assignedcannot send to dead addresscannot send to selfcannot send to 0xindex out of range_from must be ownerERC721: transfer to non ERC721Re`Dceiver implementeronly owner can burnindex out of rangeonly curator can call thisindex out of rangeDAO deposit insufficientDAO fee insufficientminting finishedmust be between 1 and 100DAO tokens requiredERC721: approve to callercannot send to dead addresscannot send to selfcannot send to 0xindex out of range_from must be ownerERC721: transfer to non ERC721Re`Dceiver implementerindex out of rangeonly curator can call thisERC721: transfer to non ERC721Re`Dceiver implementer3ed52e4afc9030f69004f163017c3ffba0b837d90061437328af87330dee95756c9ae041b9b9603da01d0aa4d912586c8d85b9fe1932c57f988d8bd0f9da3bc7