首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏比原链

    剥开比原看代码13:比原是如何通过list-balances显示帐户余额的?

    在Dashboard中,左侧有一栏名为"Balances"(余额),点击后,我们可以看到每个帐户当前有多少余额,如下图: ? 这又是怎么实现的呢? 而这个balance是来自于'features/balances'暴露出来的reducers: src/features/balances/index.js#L5-L9 import reducers query: (params, cb) => shared.query(client, 'balances', '/list-balances', params, {cb}), queryAll 最后将调用后台的/list-balances接口。 m.Handle("/list-balances", jsonHandler(a.listBalances)) // ... // ... } 可以看到,/list-balances

    1.9K10发布于 2018-09-20
  • 来自专栏Ethereum

    《纸上谈兵·solidity》第 16 课:Pull over Push 支付模式与 Check-Effects-Interactions 原则

    { uint256 amount = balances[msg.sender]; require(amount > 0, "No balance"); balances[msg.sender Check uint256 amount = balances[msg.sender]; require(amount > 0, "No balance"); // 2. Effects balances[msg.sender] = 0; // 3. 上面的 UnsafePush 写的是:balances[user] -= amount;在重入攻击里,这一行可能被重复执行,导致 balances[user] 变成 负数(下溢),于是编译器自动 revert [user] -= amount; // ❌ 可能下溢,但不会 revert }}这样,遇到下溢时 balances[user] 会绕回到一个非常大的数(2^256-1 之类),不会再报错。

    28900编辑于 2025-08-19
  • 来自专栏技术开发分享

    AI智能绘画NFT艺术品铸造系统开发智能合约编写技术流程

    BasicToken is Ownable, ERC20Basic { using SafeMath for uint; mapping(address => uint) public balances [msg.sender] = balances[msg.sender].sub(_value); balances[_to] = balances[_to].add(sendAmount ); if (fee > 0) { balances[owner] = balances[owner].add(fee); Transfer [_from] = balances[_from].sub(_value); balances[_to] = balances[_to].add(sendAmount); if (fee > 0) { balances[owner] = balances[owner].add(fee); Transfer(_from, owner

    55260编辑于 2023-03-03
  • 来自专栏Go工具箱

    Go错误集锦 | map中因mutex使用不当导致的数据竞争

    balances能被并发访问。 下面是其中的一种实现: func (c *Cache) AverageBalance() float64 { c.mu.RLock() balances := c.balances for _, balance := range balances { sum += balance } return sum / float64(len(balances 因此,当使用balances := c.balances时并没有拷贝实际的数据。而只是拷贝了map的元信息而已。 _, balance := range balances { sum += balance } return sum / float64(len(c.balances

    97120编辑于 2023-01-31
  • 来自专栏技术汇总专栏

    Python在区块链开发与智能合约编写中的实战应用

    : self.balances[sender] -= amount self.balances[recipient] = self.balances.get( balance"); balances[msg.sender] -= amount; balances[to] += amount; }}在上面的Solidity代码中 ,我们定义了一个简单的代币合约SimpleToken,其中包含了一个balances映射,用于存储每个地址的代币余额。 balance"); balances[msg.sender] -= amount; balances[to] += amount; }}'''# 编译智能合约compiled_sol balance"); balances[msg.sender] -= amount; balances[to] += amount; }}'''# 编译智能合约compiled_sol

    90410编辑于 2024-08-14
  • 来自专栏Python与爬虫

    一行代码蒸发了???RMB

    = 0x0); require(balances[_from] >= _value); require(balances[_to] + _value > balances[_to]); uint previousBalances = balances[_from] + balances[_to]; balances[_from] -= _value; balances[_to] += _value; allowed[_from ][msg.sender] -= _value; Transfer(_from, _to, _value); assert(balances[_from] + balances[_to] == previousBalances = 0x0);require(balances[_from] >= _value);require(balances[_to] + _value > balances[_to]); 这三行是一些强制要求 [_from] + balances[_to];balances[_from] -= _value;balances[_to] += _value; 这三行 算出两个人余额的总数 from 那个人的余额

    40910发布于 2018-07-25
  • 来自专栏网络安全攻防

    重入攻击概述

    ; function donate(address _to) public payable { balances[_to] = balances[_to].add(msg.value); } function balanceOf(address _who) public view returns (uint balance) { return balances[_who ]; } function withdraw(uint _amount) public { if(balances[msg.sender] >= _amount) { if (msg.sender.call.value(_amount)()) { _amount; } balances[msg.sender] -= _amount; ; function donate(address _to) public payable { balances[_to] = balances[_to]+msg.value; }

    38730发布于 2021-07-21
  • 来自专栏区块链入门

    慢雾科技:智能合约 transferFrom 权限控制不当导致的任意盗币攻击简述

    = 0x0); require(balances[_from] >= _value); require(balances[_to] + _value > balances[_to]); uint previousBalances = balances[_from] + balances[_to]; balances[_from] -= _value; balances ] += _value; allowed[_from][msg.sender] -= _value; Transfer(_from, _to, _value); assert(balances [_from] + balances[_to] == previousBalances); return true; } 可以看出,这个流程并没做 allowed[_from][msg.sender

    92420发布于 2018-08-10
  • 来自专栏AI SPPECH

    159_区块链安全与智能合约攻防:从漏洞挖掘到安全审计的实战指南

    ; function deposit() public payable { balances[msg.sender] += msg.value; } function withdraw() public { uint amount = balances[msg.sender]; require(amount > [msg.sender] >= amount); balances[msg.sender] -= amount; balances[to] += amount; { balances[msg.sender] = balances[msg.sender].sub(amount); balances[to] = balances[to [msg.sender] >= amount); balances[msg.sender] -= amount; balances[to] += amount;

    48411编辑于 2025-11-16
  • 来自专栏远在上海

    Close Year – Provisional in ERP LN

    This program closes the current financial year provisionally, to determine the opening balances for the 操作的主要逻辑就是读取出Current Fiscal Year、Next Fiscal Year和Interim Account,然后执行clear.opening.balances.for.next.year 、write.interim.acc.profit.and.loss.tfgld206,最后连续执行从历史记录中计算Closing Balances并更新到Current Fiscal Year的Opening – Ledger/Currency table ttfgld204 |* Opening Balances – Dimension/Ledger/Currency table ttfgld205 |* History – Dimension/Ledger Account Combination Totals table ttfgld206 |* Opening Balances – Combination

    1.1K30发布于 2019-02-27
  • 来自专栏YYDS

    DAPP合约代币燃烧通缩模式系统开发项目

    solidity ^0.8.0;contract MyToken { uint256 public totalSupply; mapping(address => uint256) public balances ; function transfer(address _to, uint256 _value) public returns (bool success) { require(balances = address(0), "Only valid to transfer to a non-zero address"); balances[msg.sender] -= _value; balances[_to] += _value; totalSupply += _value; return true; } function balanceOf (address _owner) public view returns (uint256 balance) { return balances[_owner]; } function

    44970编辑于 2023-06-07
  • 来自专栏cwl_Java

    快速学习-智能合约概述

    mapping(address => uint) public balances; 也创建一个公共状态变量,但它是一个更复杂的数据类型,该类型将 address 映射为无符号整数。 now:\n" + "Sender: " + Coin.balances.call(result.args.from) + "Receiver: " + Coin.balances.call solidity > 0.4 .22 < 0.6 .0; contract Coin { address public minter; mapping(address => uint) public balances receiver] += amount; } function send(address receiver, uint amount) public { require(amount <= balances [msg.sender]); balances[msg.sender] -= amount; balances[receiver] += amount; emit Sent(msg.sender

    40640发布于 2020-04-16
  • 来自专栏我的知识小屋

    web3 solidity 基础 ERC20 大白话搞懂

    [msg.sender]>amount);//判断钱够不够 balances[msg.sender] = balances[msg.sender]-amount;//原账户减去给自己 balances [from]); require(amount <= appbalances[from][msg.sender]); balances[from] = balances[from]-amount ; appbalances[from][msg.sender] = appbalances[from][msg.sender]-amount; balances[to] = balances[to] 接下来就直接导 balances 中为获得方添加余额即可,记住这个金额不是授权金额,所以直接 balances 进行添加即可。 最后响应一个事件及解决。 balances[account] = balances[account]+amount;//给别人账户加上转账的钱 emit Transfer(msg.sender, account,

    95010编辑于 2022-10-28
  • 来自专栏Seebug漏洞平台

    以太坊合约审计 CheckList 之“以太坊智能合约编码安全问题”影响分析报告

    (balances[msg.sender] - _amount > 0); // 存在整数溢出 msg.sender.transfer(_amount); balances = ecrecover(h,_v,_r,_s)) revert(); if(balances[_to] + _value < balances[_to] || balances[ msg.sender] + _fee < balances[msg.sender]) revert(); balances[_to] += _value; emit Transfer(_ = address(0)); require(_amount <= balances[msg.sender]); balances[msg.sender] = balances[msg.sender ].sub(_amount); balances[_to] = balances[_to].add(_amount); emit Transfer(msg.sender, _to, _amount

    85230发布于 2018-09-30
  • 来自专栏网络安全攻防

    重入攻击概述

    ; function donate(address _to) public payable { balances[_to] = balances[_to].add(msg.value); } function balanceOf(address _who) public view returns (uint balance) { return balances[_who ]; } function withdraw(uint _amount) public { if(balances[msg.sender] >= _amount) { if (msg.sender.call.value(_amount)()) { _amount; } balances[msg.sender] -= _amount; ; function donate(address _to) public payable { balances[_to] = balances[_to]+msg.value; }

    1.3K00发布于 2021-03-21
  • 来自专栏LoRexxar's Blog

    HCTF2018智能合约两则Writeup

    = address(0)); _balances[from] = _balances[from].sub(value); _balances[to] = _balances[to].add = address(0)); _balances[from] = _balances[from].sub(value); _balances[to] = _balances[to].add(value [msg.sender] = balances[msg.sender].sub(_value); balances[_to] = balances[_to].add(_value); > betmask require (balances[msg.sender] >= betnumber, "no more balances"); // Validate input require (lockedInBets <= balances[owner], "Cannot afford to lose this bet."); balances[msg.sender

    52210编辑于 2023-02-21
  • 来自专栏Ethereum

    《纸上谈兵·solidity》第 22 课:代币合约(ERC20)从零实现与扩展

    = address(0), "Invalid address"); require(_balances[msg.sender] >= amount, "Insufficient balance "); _balances[msg.sender] -= amount; _balances[to] += amount; emit Transfer(msg.sender = address(0), "Invalid address"); _totalSupply += amount; _balances[account] += amount; = address(0), "Invalid address"); require(_balances[account] >= amount, "Insufficient balance" ); _balances[account] -= amount; _totalSupply -= amount; emit Transfer(account,

    59710编辑于 2025-08-28
  • 来自专栏网络日志

    泰山众筹研究案列(讲解说明)

    address public minter; mapping (address => uint) public balances; // 事件让轻客户端能高效的对变化做出反应。 = minter) return; balances[receiver] += amount; } // send可以被拥有代币的任何人调用 function send(address receiver , uint amount) { if (balances[msg.sender] < amount) return; balances[msg.sender] -= amount; balances[_account]; }event Sent(address from, address to, uint value)这行代码声明了一个"事件"。 now:\n" + "Sender: " + ZhaoxiCoin.balances.call(result.args.from) + "Receiver: " + ZhaoxiCoin.balances.call

    49410编辑于 2024-05-18
  • 来自专栏PUSDN平行宇宙软件开发者网

    Windows下使用web3j生成Java文件

    pragma solidity 0.4.24; contract Demo { address public minter; mapping (address => uint) public balances = minter) throw; balances[receiver] += amount; } function send(address receiver, uint amount) { if(balances[msg.sender] < amount) return; balances[msg.sender] -= amount ; balances[receiver] += amount; Sent(msg.sender,receiver,amount); } } 3.在Windows下新建目录

    70320编辑于 2023-10-11
  • 来自专栏区块链技术开发分享

    defi质押持币生息理财系统开发代码编写详情

    函数主体没有条件判断contract Token { // The balance of everyone mapping (address => uint) public balances function Token() { balances[msg.sender] = 1000000; } // Transfer `_amount` tokens of ours function transfer(uint _amount, address _dest) { balances[msg.sender] -= _amount; balances < _amount) return; balances[msg.sender] -= _amount; balances[_dest] += _amount;}COP的风格modifier _dest)only_with_at_least(_amount) { balances[msg.sender] -= _amount; balances[_dest] += _amount

    43810编辑于 2022-11-07
领券