2.DApp-编写和运行solidity智能合约

题记

        演示如何编写solidity智能合约,以及在remix中运行solidity代码。

准备Remix环境

        在浏览器中搜索remix,找到remix官网,并打开

        由于是国内网络,所以访问国外网站较慢,可以耐心等待加载完成,或者科学上网。 

        加载完成是这样: 

 

编写 app.sol文件

        app.sol智能合约可以部署到以太坊网络上,然后通过调用 setName 函数来设置名字,再通过调用 getName 函数来获取名字。 

// SPDX-License-Identifier: MIT
//指定 Solidity 的版本号,表示该智能合约是用 Solidity 0.8.0 版本编写的
pragma solidity ^0.8.0;

//定义一个名为 NameContract 的合约
contract NameContract {
    //定义一个私有变量 name,它的值是一个字符串类型。
    string private name;

    //定义一个 Solidity 函数,名为 setName,它是一个公共函数,可以被其他合约或外部账户调用。
    //该函数有一个参数 _name,类型为 string memory,表示要设置的名字。
    //memory 关键字表示该参数的值将被存储在内存中,而不是存储在合约的状态变量中。
    function setName(string memory _name) public {
        name = _name;
    }

    //定义一个 Solidity 函数,名为 getName,它是一个公共视图函数(view function),
    //该函数不会修改合约的状态变量,只读取合约的状态变量并返回结果。
    //该函数没有参数,返回值类型为 string memory,表示返回的名字。
    //函数体中的语句 return name; 表示返回合约的状态变量 name 的值作为函数的返回值。
    //因为这是一个视图函数,所以不需要使用 memory 或 storage 关键字来指定返回值的存储位置。
    function getName() public view returns (string memory) {
        return name;
    }
}
 

// SPDX-License-Identifier: MIT
//指定 Solidity 的版本号,表示该智能合约是用 Solidity 0.8.0 版本编写的
pragma solidity ^0.8.0;

//定义一个名为 NameContract 的合约
contract NameContract {
    //定义一个私有变量 name,它的值是一个字符串类型。
    string private name;

    //定义一个 Solidity 函数,名为 setName,它是一个公共函数,可以被其他合约或外部账户调用。
    //该函数有一个参数 _name,类型为 string memory,表示要设置的名字。
    //memory 关键字表示该参数的值将被存储在内存中,而不是存储在合约的状态变量中。
    function setName(string memory _name) public {
        name = _name;
    }

    //定义一个 Solidity 函数,名为 getName,它是一个公共视图函数(view function),
    //该函数不会修改合约的状态变量,只读取合约的状态变量并返回结果。
    //该函数没有参数,返回值类型为 string memory,表示返回的名字。
    //函数体中的语句 return name; 表示返回合约的状态变量 name 的值作为函数的返回值。
    //因为这是一个视图函数,所以不需要使用 memory 或 storage 关键字来指定返回值的存储位置。
    function getName() public view returns (string memory) {
        return name;
    }
}

在remix中运行solidity代码 

 编译智能合约

 选择正确的solidity版本

 

编译成功展示图 
 部署智能合约

         选择运行智能合约的环境(remix虚拟环境,ganache,本地geth),再点击编译。

 

编译完成展示图 

 

 使用合约中的setName方法

        右侧是交易信息

 

使用合约中的getName方法 

 后记

        觉得有用可以点赞或收藏! 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智能合约Solidity编程教程 以太坊编程之菜鸟教程 译注:⾸发于ConsenSys开发者博客,原作者为Eva以及ConsenSys的开发团队。如果您想要获取更多及时信息,可以访问⾸页点击左下⾓Newsletter订阅邮件。本⽂的翻译获 得了ConsenSys创始⼈Lubin先⽣的授权。 有些⼈说以太坊太难对付,于是我们(译注:指, 下同)写了这篇⽂章来帮助⼤家学习如何利⽤以太坊编写智能合约和应⽤。这⾥所⽤到的⼯具,钱包,应⽤程序以及整个⽣态系统 仍处于开发状态,它们将来会更好⽤! 概述,讨论了关键概念,⼏⼤以太坊客户端以及写智能合约⽤到的编程语⾔。 讨论了总体的⼯作流程,以及⽬前流⾏的⼀些DApp框架和⼯具。 主要关于编程,我们将学习如何使⽤Truffle来为智能合约编写测试和构建DApp。 第⼀部分. 概述 如果你觉得⽩⽪书中的章节太晦涩,也可以直接动⼿来熟悉以太坊。在以太坊上做开发并不要求你理解所有那些"密码经济计算机科学"(crypto economic computer science),⽽ ⽩⽪书的⼤部分是关于以太坊想对于⽐特币架构上的改进。 新⼿教程 提供了官⽅的新⼿⼊门教程,以及⼀个代币合约和众筹合约的教程。合约语⾔Solidity也有。学习智能合约的另⼀份不错的资料(也是我的⼊门资料)是,不过现在可能有些过时 了。 这篇⽂章的⽬的是成为上述资料的补充,同时介绍⼀些基本的开发者⼯具,使⼊门以太坊,智能合约以及构建DApps(decentralized apps, 分布式应⽤)更加容易。我会试图按照 我⾃⼰(依然是新⼿)的理解来解释⼯作流程中的每⼀步是在做什么,我也得到了ConsenSys酷酷的开发者们的许多帮助。 基本概念 了解这些名词是⼀个不错的开始: 公钥加密系统。 Alice有⼀把公钥和⼀把私钥。她可以⽤她的私钥创建数字签名,⽽Bob可以⽤她的公钥来验证这个签名确实是⽤Alice的私钥创建的,也就是说,确实是Alice的 签名。当你创建⼀个以太坊或者⽐特币钱包的时候,那长长的 0xdf...5f 地址实质上是个公钥,对应的私钥保存某处。类似于Coinbase的在线钱包可以帮你保管私钥,你也可以⾃ ⼰保管。如果你弄丢了存有资⾦的钱包的私钥,你就等于永远失去了那笔资⾦,因此你最好对私钥做好备份。过来⼈表⽰:通过踩坑学习到这⼀点是⾮常痛苦的... 点对点⽹络。 就像BitTorrent, 以太坊分布式⽹络中的所有节点都地位平等,没有中⼼服务器。(未来会有半中⼼化的混合型服务出现为⽤户和开发者提供⽅便,这我们后⾯会讲 到。) 区块链区块链就像是⼀个全球唯⼀的帐簿,或者说是数据库,记录了⽹络中所有交易历史。 以太坊虚拟机(EVM)。 它让你能在以太坊上写出更强⼤的程序(⽐特币上也可以写脚本程序)。它有时也⽤来指以太坊区块链,负责执⾏智能合约以及⼀切。 节点。 你可以运⾏节点,通过它读写以太坊区块链,也即使⽤以太坊虚拟机。完全节点需要下载整个区块链。轻节点仍在开发中。 矿⼯。 挖矿,也就是处理区块链上的区块的节点。这个⽹页可以看到当前活跃的⼀部分以太坊矿⼯:。 ⼯作量证明。 矿⼯们总是在竞争解决⼀些数学问题。第⼀个解出答案的(算出下⼀个区块)将获得以太币作为奖励。然后所有节点都更新⾃⼰的区块链。所有想要算出下⼀个区块 的矿⼯都有与其他节点保持同步,并且维护同⼀个区块链的动⼒,因此整个⽹络总是能达成共识。(注意:以太坊正计划转向没有矿⼯的权益证明系统(POS),不过那不在本⽂讨 论范围之内。) 以太币。 缩写ETH。⼀种你可以购买和使⽤的真正的数字货币。这⾥是可以交易以太币的其中⼀家交易所的。在写这篇⽂章的时候,1个以太币价值65美分。 Gas. (汽油) 在以太坊上执⾏程序以及保存数据都要消耗⼀定量的以太币,Gas是以太币转换⽽成。这个机制⽤来保证效率。 DApp. 以太坊社区把基于智能合约的应⽤称为去中⼼化的应⽤程序(Decentralized App)。DApp的⽬标是(或者应该是)让你的智能合约有⼀个友好的界⾯,外加⼀些额外的东西, 例如IPFS(可以存储和读取数据的去中⼼化⽹络,不是出⾃以太坊团队但有类似的精神)。DApp可以跑在⼀台能与以太坊节点交互的中⼼化服务器上,也可以跑在任意⼀个以太 坊平等节点上。(花⼀分钟思考⼀下:与⼀般的⽹站不同,DApp不能跑在普通的服务器上。他们需要提交交易到区块链并且从区块链⽽不是中⼼化数据库读取重要数据。相对于 典型的⽤户登录系统,⽤户有可能被表⽰成⼀个钱包地址⽽其它⽤户数据保存在本地。许多事情都会与⽬前的web应⽤有不同架构。) 如果想看看从另⼀个新⼿视⾓怎么理解这些概念,请读。 以太坊客户端,智能合约语⾔ 编写和部署智能合约并不要求你运⾏⼀个以太坊节点。下⾯有列

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值