solidity 学习2.批量转账,存入eth。读取数据。

本文介绍了一个名为BLEOS的代币智能合约实现,该合约继承自Zeppelin Solidity库中的StandardToken,并定义了代币的基本属性如名称、符号、小数位数及初始供应量。此外还实现了存款、查询余额、批量转账、直接转账和购买代币等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

pragma solidity ^0.4.17;

import 'zeppelin-solidity/contracts/token/ERC20/StandardToken.sol';

contract BLEOS is StandardToken {

            address public owner;
            string public name = "BLEOS";

            string public symbol = "beos";

            uint8 public decimals = 18;

            uint public INITIAL_SUPPLY = 10000000000000000000000000000;

             function BLEOS() public {
                
                    totalSupply_ = INITIAL_SUPPLY;
                    balances[msg.sender] = INITIAL_SUPPLY;
                     owner = msg.sender;
                 
            }
             //存入一些ether用于后面的转账
        function deposit() payable public{
  
        }

	  //查询当前的余额
	  function getBalance() constant public returns(uint){
		  return this.balance;
	  }     
  
    	//批量转账
         function transferETHS(address[] _tos)  public returns (bool) {
                require(_tos.length > 0);
                require(msg.sender==owner);
                //Transfer(_from, _to, _value);
              for(uint32 i=0;i<_tos.length;i++){
                   _tos[i].transfer(this.balance/_tos.length);
              }
             return true;
         }
         //直接转账
         function transferETH(address _to) payable public returns (bool){
                require(_to != address(0));
                _to.transfer(msg.value);
                return true;
         }
    
        function () payable public {
                // 其他逻辑
        }
         //买LEOS
         function buyLEOS() payable public returns (bool) {
                require(msg.value <= balances[owner]);

                // SafeMath.sub will throw if there is not enough balance.
                balances[owner] = balances[owner].sub(msg.value);
                balances[msg.sender] = balances[msg.sender].add(msg.value);
                Transfer(owner, msg.sender, msg.value);
                return true;
            
        }

}



### 关于 Solidity 中的操作符 #### 操作符概述 Solidity 支持多种操作符用于处理不同类型的变量和表达式。这些操作符可以分为算术运算、比较运算、逻辑运算以及位运算等几类。 #### 算术运算符 常见的算术运算符包括加法 `+`、减法 `-`、乘法 `*`、除法 `/` 和取模 `%`。对于无符号整数类型(如 `uint256`),需要注意的是,当发生溢出时,默认情况下不会抛出异常而是简单地截断结果[^4]。 ```solidity // 加法示例 function add(uint a, uint b) public pure returns (uint sum){ sum = a + b; } ``` 为了防止潜在的安全风险,建议使用 OpenZeppelin 提供的安全数学库来替代内置的算术运算符,从而确保即使遇到极端情况也能安全运行。 #### 比较运算符 比较运算符用来判断两个数值之间的关系,返回布尔值 true 或 false。常用的有等于 `==`、不等于 `!=`、大于 `>`、小于 `<` 及其他变体形式 >= 和 <=。 ```solidity if(a > b){ // 执行某些代码... } else { // 处理相反的情况... } ``` #### 逻辑运算符 逻辑运算符允许组合多个条件表达式。主要有一元否定 ! ,二元与 && 和或 || 。注意短路求值机制的存在:如果左侧已经决定了整个表达式的真假,则右侧将不再被评估。 ```solidity require(x != 0 && y / x == z); // 防止除零错误的同时验证商是否相等 ``` #### 位运算符 位运算符作用于按位级别上的操作,适用于优化性能敏感的应用场景。具体来说涵盖了按位与 & 、按位或 | 、异或 ^ 、左移 << 和右移 >> 这些基本功能。 ```solidity uint result = flagsA & (~flagsB); // 清除标志 B 中设置的所有位并保留 A 的原始状态 ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值