黑马程序员技术交流社区

标题: 【成都校区*精品】solidity面向对象(一) [打印本页]

作者: 小蜀哥哥    时间: 2018-5-17 15:42
标题: 【成都校区*精品】solidity面向对象(一)
本帖最后由 小蜀哥哥 于 2018-5-17 15:42 编辑

什么是solidity?
Solidity是一种面向对象的智能合约高级语言,运行在以太坊区块链平台的虚拟机(EVM)上。我们可以使用solidity来编写智能合约。
什么是智能合约?
要说智能合约那不得不提一下我们熟知的传统合约。 在我们的现实社会中,我们会遇到很多场景去签一些合同,以约束双方的经济行为,但是即使我们签了合同,也无法保证在合同期内双方就一定能完整履行合同内的承诺。这样就出现打官司,找第三方介入调查,取证,耗费大量的时间成本和物质成本来证明对方的违约的事实。如果第三方作恶,如果调查某一环节作恶,如果合同被盗,如果当事人跳楼,死无对证,等等任何一个如果都可能对结果或者时间成本又或者经济成本带来大量的损失。 传统的合约会受到各种维度的影响,自动化维度,主客观维度,成本维度,执行时间维度,违约惩罚维度,适用范围维度等。 智能合约在很大程度上解决了这些问题。 你只需要提前规定好合约内容,程序就会在触发合约条件的时候自动执行合约内容。 不过因为技术原因,智能合约的理论在很长一段时间内是无法实现的。因为及时是智能合约也需要人去监控,如果监控者作恶私自修改了合约怎么办呢?区块链的出现可以解决这个问题。
区块链的特性
什么是区块链,建议大家去网上搜一搜,这里篇幅较小就不详细介绍了。 我们直接来讲区块链的特性:1.数据无法删除、修改,只能新增,保证了历史的可追溯,同时作恶的成本将很高,因为其作恶行为将被永远记录。 2.去中心化,避免了中心化因素的影响。
智能合约的应用场景
基于区块链技术的智能合约的应用场景并不单一,一个合约可以被写入到区块链中,那么任何人想要私自修改合约或者作恶都会会变得非常难。而且基于区块链的特性,每一份合约都具有可追溯性,保证了存储读取整个过程可以追踪。区块链自带的共识算法构建出一套状态机系统,使智能合约能够高效地运行。

类是一个抽象的概念,他把相似的属性和行为抽象出来,形成一个类.类实例化可以获得多个对象我的白色iphone是一个对象,白色和iphone是对象的两个属性.手机则是一个类,我的白色iphone手机则是该类的一个对象,小明的红色魅族手机是该类的创建出来的另一个对象.他们都属于手机这个类(类型)
solidity去实现一个类
java中:
[Java] 纯文本查看 复制代码
class person{

}
solidity中:
[Java] 纯文本查看 复制代码
pragma solidity ^0.4.0;
contract Student{

}
pragma:版本声明
solidity:开发语言
0.4.0:当前合约的版本
^:向上兼容,用高版本的也能编译
solidity声明属性和方法
[AppleScript] 纯文本查看 复制代码
pragma solidity ^0.4.0;
contract Student{
    uint _height; //身高属性
    uint _age;//年龄属性

    //构造函数,方法名和合约名相同,在创建对象时构造函数会执行
    function Person(){
        _height = 170;
        _age = 25;      
    }

    //普通设值函数,可以对age属性进行修改值
    function setAge(uint age){
        _age = age;
    }

    //获得age属性的值的方法
    //constant:方法只读
    //return (uint) 代表返回值类型
    function age()constant return (uint){
        return _age;
    }

    //Solidity语言支持在一个函数中返回多个结果。使用return (a, b, ... n);来返回多个值。

    function ff(uint a)constant return (uint,uint){
        return (a+1,a+2);
    }

}

以上则是solidity的类的声明,属性的定义,方法的声明介绍啦.
总结今天我们主要是了解智能合约,以及编写智能合约的solidity如何编写一个类和一些基础的语法规则。谢谢观看。













作者: 钟佩桓    时间: 2018-5-17 15:47
渣渣辉厉害!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2