原创 | 工匠 (来自本体社区的技术人员)

---------------

写在前面

最近在利用业余时间学习本体的开发。我打算把自己学习的过程记录下来,一方面便于自己梳理学到的东西,另一方面希望可以通过笔记的共享,能使本体后来的开发者少走弯路。

由于是初学者,学习本体开发的过程中遇到了很多问题,在此,特别感谢本体社区的各位老师(宏雷、楚笙、Mickey、雪飞的逆袭、Andy季、周佩文等)耐心地为我解答各种各样的问题,本体有你们,真好!

学习本篇的目的:

Storeage dAPI,即存储dAPI,就是存储相关的操作,我们都知道数据库的存储操作主要有增加、删除、修改和查找,本体智能合约的存储也是围绕这四个动作,这一篇我们就来学习一下,在和在本体的智能合约中进行增加、删除、修改和查找。

目录:

1. Storeage dAPI有哪些?

2. 如何创建合约来调用?

1.Storeage dAPI有哪些?

存储API主要有5个,如下图:

1.1 GetContext()查询

这个dAPI用于调用智能合约的存储。

它返回的是合约的哈希值,我们知道每个合约都是存储在区块链上的,那我我们怎么查找这个合约存在区块链上的哪一个存储区呢?就可以通过这个dAPI查询。

1.2 GetReadOnlyContext()查询

用于调用智能合约的存储。用户只能读取,但是没有权利将任何数据放入和删除到持久存储区域。

1.3 Get()查询

用于从存储中获取数据,可以通过key查找到相应的value

1.4 Put()增加/修改

用于将数据保存到存储,也可以实现修改操作

1.5 Delete()删除

用于根据key从存储中删除对应的数据

下面这张图,详细地说明了每个dAPI地参数和返回值,

2.如何创建合约来调用?

2.1编译

copy官方提供地智能合约代码到SmartX中,这份合约中包含了所有Storeage dAPI地调用,如下图:

编译完成后我们可以在ABI文件里看到这个合约包含5个函数,每个函数分别调用一个dAPI,如下图:

方法列表:

get_sc( )

get_read_only_sc( )

get_data( key )

save_data( key , value )

delete_data( key )

2.2 部署

·点击“部署”,输入密码后,看到可以选择运行如下函数:

2.3 运行

2.3.1get_sc 查询

首先,选择函数get_sc,debug运行结果如下:

2019/6/30 下午4:39:23 Invoke: Interop(3deae9a67f48009f380698a9ad0da250ddd44b6b)

3d开头地数据就是哈希值,这个值跟合约地哈希值(如下图)是反序地。

2.3.2 get_read_only_sc 查询

选择函数get_read_only_sc,debug运行结果如下:

2019/6/30 下午4:43:32 Invoke: Interop(3deae9a67f48009f380698a9ad0da250ddd44b6b)

跟上面一个函数地执行结果是一样地,因为这两个函数查询地是一个存储区。区别是一个只能读,另一个可写可读。

2.3.3 save_data 增加/修改

选择save_data函数,设置key为字符串型值为1,设置value为整型值为2,

因为是网链上增加数据,这时候我们不能选择debug运行或与执行,必须选择“运行”,运行结果是成功的,如下:

2.3.4 get_data 查询数据

选择get_data 函数,设置key为字符串型值为1,点击运行,返回地结果是2

2.3.5 delete_data 删除数据

选择delete_data 函数,设置key为字符串型值为1,点击运行,返回地结果如下图:

然后我们在查询一次看看是否删除成功,

选择get_data 函数,设置key为字符串型值为1,点击运行,返回地结果如下图:

可以看到返回结果是空地字符串,说明删除成功了。

写在最后

希望有更多的小伙伴参与到本体开发学习中来,让我们共同为本体的生态建设添砖加瓦!感兴趣的小伙伴可以联系我,共同学习!

从零学本体dApp开发(18):分片智能合约也有存储 dAPI相关推荐

  1. 从零学本体dApp开发(20): 分片合约也有Runtime dAPI

    原创 | 工匠 (来自本体社区的技术人员) --------------- 写在前面 最近在利用业余时间学习本体的开发.我打算把自己学习的过程记录下来,一方面便于自己梳理学到的东西,另一方面希望可以通 ...

  2. 从零学本体dApp开发(26):本体签名服务的API与Postman

    原创 | 工匠 (来自本体社区的技术人员) --------------- 写在前面 最近在利用业余时间学习本体的开发.我打算把自己学习的过程记录下来,一方面便于自己梳理学到的东西,另一方面希望可以通 ...

  3. 区块链DAPP开发 以太坊智能合约框架有哪些

    一.truffle(JavaScript) Truffle 是一个在以太坊进行 DApp 开发的世界级开发环境.测试框架. 使用 Truffle 开发有一以下优点: 内置智能合约编译,链接,部署和二进 ...

  4. 以太坊Dapp开发通过truffle部署合约

    以太坊Dapp开发通过truffle部署合约 Truffle是一个非常流行 DApp 开发框架,他可以帮我们处理掉大量无关紧要的小事情,让我们可以迅速开始写代码-编译-部署-测试-打包DApp这个流程 ...

  5. java和以太坊交互_java类库web3j开发以太坊智能合约快速入门

    web3j简介 web3j是一个轻量级.高度模块化.响应式.类型安全的Java和Android类库提供丰富API,用于处理以太坊智能合约及与以太坊网络上的客户端(节点)进行集成. 可以通过它进行以太坊 ...

  6. python智能合约编程_如何用Python Flask开发以太坊智能合约

    将数据存储在数据库中是任何软件应用程序不可或缺的一部分.无论如何控制该数据库都有一个该数据的主控.区块链技术将数据存储到区块链网络内的区块中.因此,只要某个节点与网络同步,它们就会获得区块中数据的副本 ...

  7. 了区块链开放平台baas_区块链开放平台 BaaS 系统开发,区块链智能合约撰写服务...

    区块链开放平台 BaaS 系统开发,区块链智能合约撰写服务 什么是区块链即服务? 区块链即服务是一种独特的经济模型,允许消费者使用基于云的服务来开发,使用和托管其区块链应用,功能和智能合约.  源中瑞 ...

  8. 使用hardhat开发以太坊智能合约-测试合约

    Web3工具网站[点我访问] 现已上线,欢迎使用,如有好的意见和建议也欢迎反馈. 本系列课程: 第一节:使用hardhat开发以太坊智能合约-搭建环境 第二节:使用hardhat开发以太坊智能合约-测 ...

  9. 使用hardhat 开发以太坊智能合约-验证合约

    Web3工具网站[点我访问] 现已上线,欢迎使用,如有好的意见和建议也欢迎反馈. 本系列课程: 第一节:使用hardhat开发以太坊智能合约-搭建环境 第二节:使用hardhat开发以太坊智能合约-测 ...

最新文章

  1. Java综合知识总结_数据库篇
  2. java-模拟存放String类型数据的栈
  3. Java题-直接赋值与重新创建内存
  4. TypeScript完全解读(26课时)_14.ES6和Nodejs中的模块
  5. Eclipse字符集环境配置
  6. python基础刷题_数据结构与算法LeetCode刷题(Python)
  7. C Primer Plus第三章总结
  8. [渝粤教育] 中国地质大学 大学英语(7) 复习题
  9. 【转】响应式布局和自适应布局详解
  10. 小米蓝牙耳机驱动_硬核拆解——小米蓝牙耳机
  11. php采标教程,国内液压与气动行业标准大全
  12. message from server: “Host is not allowed to connect to this MySQL server“问题的解决办法
  13. bzoj2548[Cstc2002]灭鼠行动
  14. 在线生成txt图案或者logo
  15. Codeforces Round #644 (Div. 3) E.Polygon
  16. via浏览器 html代码,网页黑色加强的css代码
  17. java计算两个日期的月数
  18. react-native-calendars的使用
  19. 微信小程序的测试方法,抓包,模拟
  20. 静电耳机与普通动圈或动铁耳机有什么区别

热门文章

  1. html 萤火虫特效,jquery萤火虫飞舞动画特效插件
  2. 清华刘知远提出CPT:基于预训练视觉-语言模型的跨模态Prompt-Tuning
  3. 第一章 Centos 简介与安装
  4. 河北大学生命科学学院期末Biopython编程实践。利用Biopython包读取新冠病毒(id:NC_045512.2)序列(GenBank格式NC_045512.2.gb),将其中FEATURE的类
  5. L1-058 6翻了 (15分)
  6. python代码练习,微信登入并生成头像大图
  7. 利用canvas开发一个绘图板
  8. sql dateadd 和datediff的用法
  9. matlab上确界距离,习题课PPT课件.ppt
  10. Jitter的基本知识