区块链EOS|智能合约入门4——了解数据持久性

本文通过一个简单的地址簿应用实例,介绍如何在EOS区块链上实现数据的持久化存储。首先创建一个名为addressbook的合约,定义person结构体作为数据表,配置multi_index表,然后编写添加、修改和删除记录的方法。最后,编译合约,部署到addressbook账户,并进行测试,展示数据操作的过程和结果。
摘要由CSDN通过智能技术生成

点击查看该系列文章


正文

  本文将使用一个简单的例子帮助理解EOSIO中的数据持久性。

1. 在你的contract目录下创建addressbook文件夹,并在其中创建addressbook.cpp文件。

cd /Users/yourUserName/Documents/EOS/contracts
mkdir addressbook
cd addressbook
touch addressbook.cpp

2. 在cpp文件中编写一个继承自eosio::contract的addressbook类。
  同时,在public方法中继承eosio::contract的构造函数。

#include <eosio/eosio.hpp>

using namespace eosio;

class [[eosio::contract("addressbook")]] addressbook : public eosio::contract {
   

public:
  using contract::contract;
private:
  
};  

3. 添加person表结构。
  使用name类型来定义一个叫做key的变量,同时,编写一个叫做primary_key()的方法(返回key的值),于是key就是该结构的主键。

struct person {
   
 name key;
 std::string first_name;
 std::string last_name;
 std::string street;
 std::string city;
 std::string state;

 uint64_t primary_key() const {
    return key.value;}
};

4. 配置multi_index表。

typedef eosio::multi_index<"people"_n, person> address_index;

  “people”是该表的名称(_n表示为name类型),person是前面定义的结构体,address_index是该类型的类型名(后面将使用其实例化表)。


5. 编写添加修改记录的方法。

[[eosio::action]]
void upsert(name user, std::string first_name, std::string last_name, std::string street, std::string city, std::string state) {
   
  require_auth( user ); //只能操作自己的记录,所以需要验证操作的记录是不是自己的。
  //multi_index的实例化需要两个参数,code和scope。
  //code是拥有该合约的账户,scope是用于逻辑上的划分(目前没什么作用)
  address_index addresses(get_self(), get_first_receiver().value);
  //创建一个查询,使用f
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值