首页 > 其他分享 >『0004』- 基于Ethereum Wallet的Solidity HelloWorld智能合约(Smart Contract)

『0004』- 基于Ethereum Wallet的Solidity HelloWorld智能合约(Smart Contract)

时间:2023-04-08 17:01:15浏览次数:46  
标签:0004 count Counter Solidity HelloWorld 点击 按钮 区块 合约

作者:黎跃春,

相信大家都有学习各种开发语言的经历,一般学习任何一门语言都会先从最简单的HelloWorld开始,所以本篇文章,我们将编写一个最基本的合约代码,并且一步步讲解如何通过Ethereum Wallet将合约部署到区块链,同时我们将通过本demo的演示如何通过发送数据和接收数据和合约进行交互。

Solidity合约的语法和面向对象编程语言非常相似,一个合约有我们能够调用的方法(函数)和能够存储数据和读取数据的属性(状态变量)

Counter合约源码

我们的Counter合约将increment方法被调用的次数存储到count属性中。并且每个人都可以通过getCount方法获取区块链上count的值。

pragma solidity ^0.4.4;

contract Counter {

    /* 定义一个uint类型的count变量 */
    uint count = 0;

    /* 当这个方法被调用时count的值会加1 */
    function increment() public {
       count = count + 1;
    }

    /* 读取count数据 */
    function getCount() constant returns (uint) {
       return count;
    }

}

Counter合约部署

  • 要想发布我们的合约到区块链,打开Ethereum Wallet然后点击Contracts
  • 点击部署一个新合约。
  • 将我们的Counter合约代码拷贝到Ethereum Wallet代码区域。
  • 选择Counter合约,然后点击DEPLOY按钮。
  • 输入当前部署的钱包的密码,然后点击SEND TRANSACTION按钮。
  • 查看最新交易。
  • 查看交易信息。

和Counter合约互动

  • 因为我们部署的合约是部署在Account 2上的,所以我们可以点击Account 2查看最新的交易记录。
  • 点击Counter按钮,进入交互界面。
  • 选择IncrementAccount 2,然后点击EXECUTE按钮。
  • 输入密码,点击SEND TRANSACTION按钮。
  • 交易执行完成后,count会自动加1


小结

部署合约时,因为要往区块链写入数据,需要矿工进行验证,所以需要花费一些gas奖励给矿工,还有当我们每次调用increment方法时,也属于写入数据,同样需要花费gas,但是调用getCount方法时只是从区块链读取数据,无需验证,读取数据无须花费gas。

技术交流

  • 区块链技术交流QQ群:348924182
  • 「区块链部落」官方公众号


标签:0004,count,Counter,Solidity,HelloWorld,点击,按钮,区块,合约
From: https://blog.51cto.com/u_10981011/6177817

相关文章

  • 『0014』 - Solidity Types - 动态大小字节数组(Dynamically-sized byte array)
    作者:黎跃春,一、Dynamically-sizedbytearraystring是一个动态尺寸的UTF-8编码字符串,它其实是一个特殊的可变字节数组,string是引用类型,而非值类型。bytes动态字节数组,引用类型。根据经验,在我们不确定字节数据大小的情况下,我们可以使用string或者bytes,而如果我们清楚的知道或者......
  • 『0018』 - Solidity Types - Solidity 结构体(Structs)
    作者:黎跃春,自定义结构体pragmasolidity^0.4.4;contractStudents{structPerson{uintage;uintstuID;stringname;}}Person就是我们自定义的一个新的结构体类型,结构体里面可以存放任意类型的值。初始化一个结构体初始化一个storage......
  • 如何在Solidity中建立DAO(去中心化自治组织)?
    本文将帮助您理解DAO的概念,并帮助您构建一个基本的DAO。什么是DAO?您可以将DAO视为基于互联网的实体(比如企业),由其股东(拥有代币和比例投票权的成员)共同拥有和管理。在DAO中,决策是通过提案做出的,DAO的成员可以对这些提案进行投票,然后执行它们。DAO完全由可公开查看/可验......
  • Python-HelloWorld
    Python语言在形式上比之前学过的CC++Java等都要简单的多,它不需要导包或者声明#include什么的,甚至不需要创建class或者main函数我们首先新建一个python文件,后缀是.py......
  • HelloWorld
    c#1.HelloWorldusingSystem;//注释:引入命名空间namespace_001{//Pragram类classPragram{//Main方法staticvoidMain()......
  • HelloWorld之Java调用C++(JNI)
    JNI(JavaNativeInterface),通过使用Java本地接口书写程序,可以确保代码在不同的平台上方便移植。1、java新建类HelloWorld,并声明native方法,引入hello的dllpublicclassHel......
  • HelloWorld之Java调用C++(JNI)
    JNI(JavaNativeInterface),通过使用Java本地接口书写程序,可以确保代码在不同的平台上方便移植。1、java新建类HelloWorld,并声明native方法,引入hello的dllpublicclassHel......
  • QT | 手写代码实现HelloWorld
    QT|手写代码实现HelloWorld文章目录`QT`|手写代码实现`HelloWorld`1.新建工程1-1.main.cpp文件1-2.mainwindow.h和mainwindow.cpp文件1-3.编译、运行2.编码实现简易的......
  • 0004.容器之vector
    #include<iostream>......
  • 编写HelloWorld程序
    编写HelloWorld程序新建一个文件夹,用于存放代码新建一个Java文件(Hello.Java)后缀名为.java编写代码publicclassHello{publicstaticvoidmain(String[]a......