ethereum(以太坊)(一)
从这周开始,开始学习以太坊开发--solidity,开始决定往区块链方向发展,毕竟区块链技术应用广泛。一开始接触solidity开发语言不太习惯,毕竟一直在学习python语法,有很多都不能接受。有难度,我喜欢!!
成功者往往会选择走人少走的,更艰难的路,只有做别人都很难实现的事,再加上个人加倍付出的努力,成功才更有意义!!!
pragma solidity ^0.4.0;
contract Test{
    string str1;
    uint8 _age;
    uint8 _height;
    uint8 _sex;
    address _owner;
    //函数名与与合约名一样则表示构造函数,内部赋值变量需要先声明状态变量   
  //Variables inside the construct cannot be called directly outside
    function Test(){ //==constructor
        _age = 10;
        _height = 140;
        _sex = 1;
        _owner = msg.sender;
     //uint public _mouth;ParserError
    }
    function setvalue(uint8 age){
        _age = age;
    }
    function getvalue() constant returns(uint8){
        return _age;
    }
    function setStrvalue(string pam){
        str1 = pam;
    }
    //向字符串内传参,使用双引号("");若使用单引号('),SyntaxError: Unexpected token ' in JSON at position 1
    function getStrvalue() constant returns(string){
        return str1;
    }
    //未执行kill(),返回当前合约地址;执行kill(),error: Failed to decode output: TypeError: Cannot read property 'length' of undefined
    function getOwner() constant returns(address){
        return _owner;
    }
    // 析构函数:当msg.sender为owner,删除合约地址
    function kill() public{
        if (_owner == msg.sender){
            selfdestruct(_owner);
        }
    }
}
强制的数据位置(Forced data location)
状态变量(State variables)强制为: storage
默认数据位置(Default data location)
函数参数及返回参数:memory
复杂类型的局部变量:storage 深入分析
storage 存储结构是在合约创建的时候就确定好了的,它取决于合约所声明状态变量。但是内容可以被(交易)调用改变。
Solidity 称这个为状态改变,这也是合约级变量称为状态变量的原因。也可以更好的理解为什么状态变量都是storage存储。 memory 只能用于函数内部,memory 声明用来告知EVM在运行时创建一块(固定大小)内存区域给变量使用。
storage 在区块链中是用key/value的形式存储,而memory则表现为字节数组
ethereum(以太坊)(一)的更多相关文章
- ethereum(以太坊)(实例)--"安全的远程购买"
		
pragma solidity ^0.4.10; contract Safebuy{ uint public price; address public seller; address public ...
 - ethereum(以太坊)(实例)--"简单的公开竞拍"
		
说真的,刚开始接触这个竞拍案例--“简单的公开竞拍”,我就抱着简单的心态去查看这个实例,但是自我感觉并不简单.应该是我实力不到家的原因吧!!!233333...不过经过大半天的努力,自己理解完之后,觉 ...
 - ethereum(以太坊)(十四)--Delete
		
pragma solidity ^0.4.10; contract Delete{ /* delete可用于任何变量(除mapping),将其设置成默认值 bytes/string:删除所有元素,其长 ...
 - ethereum(以太坊)(基础)--容易忽略的坑(三)
		
pragma solidity ^0.4.10; contract Byte{ bytes [] public T=new bytes[](3); function setLeng(uint len) ...
 - ethereum(以太坊)(基础)--容易忽略的坑(二)
		
pragma solidity ^0.4.0; contract EMath{ string public _a="lin"; function f() public{ modif ...
 - ethereum(以太坊)(基础)--容易忽略的坑(一)
		
pragma solidity ^0.4.0; contract base{ address public _owner=msg.sender; uint _a; string internal _b ...
 - ethereum(以太坊)(十三)--异常处理/元祖
		
pragma solidity ^0.4.4; contract Students{ uint[] data= new uint[](4); address _owner = msg.sender; ...
 - ethereum(以太坊)(十二)--应用(二)__投票(基础总和)
		
编写应用合约之前,先弄清它的逻辑,有助于我们更好的部署合约 pragma solidity ^0.4.21; pragma experimental ABIEncoderV2; contract vo ...
 - ethereum(以太坊)(十二)--应用(一)__集资(构造函数/映射)
		
pragma solidity ^0.4.4; contract funder{ //0xca35b7d915458ef540ade6068dfe2f44e8fa733c //0x14723a09ac ...
 
随机推荐
- [CF 612E]Square Root of Permutation
			
A permutation of length n is an array containing each integer from 1 to n exactly once. For example, ...
 - maven课程 项目管理利器-maven 3-1 maven常用的构建命令
			
mvn -v 查看mvn版本 mvn compile 编译 mvn test 测试 mvn package 编译,打包(这个命令会在你的项目路径下一个target目录,并且拥有compile命令的功 ...
 - Postman工具——下载与安装(转)
			
https://blog.csdn.net/water_0815/article/details/53263643 今天给大家分享一款工具,好的工具能够让开发更高效,有时能成倍地提高.接下来会分几篇来 ...
 - html 01前沿-web介绍
			
1. 认识网页 网页主要由文字.图像和超链接等元素构成.当然,除了这些元素,网页中还可以包含音频.视频以及Flash等. 2. 浏览器(显示代码) 浏览器是网页显示.运行的平台,常用的浏览器有IE.火 ...
 - 好用的切换滑动焦点图框架jquery.superslide
			
拿到学习网站:http://www.superslide2.com/
 - SQLServer查询语句收集
			
常用的SQLServer查询语句,有空可以多练习一下,增加记忆,可以提高工作效率! 1.数据操作 Select --从数据库表中检索数据行和列Insert --向数据库表添加新数据 ...
 - TeamViewer安装使用
			
1.下载安装包 官网下载最新安装包 2.安装步骤 3.连接 输入密码即可控制伙伴电脑.
 - [原创]在Debian9上配置NAS
			
序言 此教程安装的都是最新版本的.由于是当NAS让它非常稳定的运行,所以能不安装的软件尽量不要安装. 一.准备工作 1. 更新系统 没啥,就他喵想用个最新的. apt update && ...
 - Java线程堆栈分析
			
不知觉间工作已有一年了,闲下来的时候总会思考下,作为一名Java程序员,不能一直停留在开发业务使用框架上面.老话说得好,机会是留给有准备的人的,因此,开始计划看一些Java底层一点的东西,尝试开始在学 ...
 - 笨办法学Python(一)
			
习题 1: 第一个程序 你应该在练习 0 中花了不少的时间,学会了如何安装文本编辑器.运行文本编辑器.以及如何运行命令行终端,而且你已经花时间熟悉了这些工具.请不要跳过前一个练习的内容直接进行下面的内 ...