丹阳地区:自适应网页与响应式网页有何不同?

摘要:丹阳做网站的公司,自适应网页和响应式网页区别,怎么做网站内部搜索功能,移动广告平台Solidity 合约安全,常见漏洞(第三篇) ERC20 代币问题
丹阳做网站的公司,自适应网页和响应式网页区别,怎么做网站内部搜索功能,移动广告平台Solidity 合约安全#xff0c;常见漏洞#xff08;第三篇#xff09; ERC20 代币问题 如果你只处理受信任的 ERC20 代币#xff0c;这些问题大多不适用。然而#xff0c;当与任意的或部分不受信任的 ERC20 代币交互时#xff0c;就有一些需要注意的地方。 ERC20#…Solidity 合约安全常见漏洞第三篇 ERC20 代币问题 如果你只处理受信任的 ERC20 代币这些问题大多不适用。然而当与任意的或部分不受信任的 ERC20 代币交互时就有一些需要注意的地方。 ERC20转账扣费 当与不信任的代币打交道时你不应该认为你的余额一定会增加那么多。一个 ERC20 代币有可能这样实现它的转账函数如下所示 contract ERC20 {// internally called by transfer() and transferFrom()// balance and approval checks happen in the callerfunction _transfer(address from, address to, uint256 amount) internal returns (bool) {fee amount * 100 / 99;balanceOf[from] - to;balanceOf[to] (amount - fee);balanceOf[TREASURY] fee;emit Transfer(msg.sender, to, (amount - fee));return true;} }这种代币对每笔交易都会征收 1%的税。因此如果一个智能合约与该代币进行如下交互我们将得到意想不到的回退或资产被盗。 contract Stake {mapping(address uint256) public balancesInContract;function stake(uint256 amount) public {token.transferFrom(msg.sender, address(this), amount);balancesInContract[msg.sender] amount; // 这是错误的}function unstake() public {uint256 toSend balancesInContract[msg.sender];delete balancesInContract[msg.sender];// this could revert because toSend is 1% greater than// the amount in the contract. Otherwise, 1% will be stolen// from other depositors.token.transfer(msg.sender, toSend);} }ERC20: rebase 的代币 Rebasing 代币由 Olympus DAO 的 sOhm 代币 和 Ampleforth 的 AMPL 代币所推广。Coingecko 维护了一个 Rebasing ERC20 代币的列表。 当一个代币回溯时总发行量会发生变化每个人的余额会根据回溯的方向而增加或减少。 在处理 rebase 代币时以下代码可能会被破坏 contract WillBreak {mapping(address uint256) public balanceHeld;IERC20 private rebasingTokenfunction deposit(uint256 amount) external {balanceHeld[msg.sender] amount;rebasingToken.transferFrom(msg.sender, address(this), amount);}function withdraw() external {amount balanceHeld[msg.sender];delete balanceHeld[msg.sender];// 错误, amount 也许会超出转出范围rebasingToken.transfer(msg.sender, amount);} }许多合约的解决方案是简单地不允许 rebase 代币。然而我们可以修改上面的代码在将账户余额转给接受者之前检查 balanceOf(address(this))。那么即使余额发生变化它仍然可以工作。
阅读全文