Comments (4)
@daejunpark
Good point, thanks for the feedback. One potential issue is that many ERC20s are not fully ERC20 compliant (over 130 on EtherDelta) and do not return a bool at all, so this assertion might make those token transfers to fail. I'll write a test for it.
The only way I can think of that covers all cases is something like this:
user_balance: uint256 = Token(self.token).balanceOf(msg.sender)
self.token.transfer(msg.sender, tokens_purchased)
assert Token(self.token).balanceOf(msg.sender) == user_balance - tokens_purchased
Probably not even that bad a gas hit either!
from v1-contracts.
I decided to go with assert self.token.transfer(msg.sender, tokens)
. Tokens that do not return True
will need to be wrapped.
from v1-contracts.
Is there a recommend way of doing this wrapping in Vyper? I’ve seen some solutions in solidity.
from v1-contracts.
Just for info: Vyper has assert_modifiable
for this purpose now.
from v1-contracts.
Related Issues (20)
- contracts-vyper instruction HOT 1
- getTokenToTokenPrice HOT 2
- Tokens that do no return bools do not work HOT 1
- vNext Feature Request: Moving Average Price Feed Data HOT 3
- Unknown list type HOT 1
- Market limit orders for Uniswap HOT 7
- How important is the `min_liquidity` argument when adding liquidity
- UIP 1: Optional Permissioned Liquidity Pools HOT 2
- Add support for EIP1155
- ERC-777 token support HOT 2
- Doesn’t woks with ᴇʀᴄ20 tokens which always returns nothing. HOT 1
- What will happen in case of REVERT inside DELEGATE_CALL? HOT 4
- Support for latest Vyper compiler HOT 4
- End to End encryption of Uniswap to prevent front running HOT 3
- Bytecode: deployedBytecode or constructor?
- ABI removeLiquidity return values name collision
- Can't compile contracts on master branch, are other branch contracts okay to test on local testnet? HOT 1
- Add ERC-20 compatibility check when creating a new exchange HOT 1
- Missing ETH after failed attempt to add additional funds to UBT/ETH Liquidity pool HOT 2
- 如何将一个地址中的代币转移到另外一个地址中?
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from v1-contracts.