从零学本体dApp开发(18):分片智能合约也有存储 dAPI
原创 | 工匠 (来自本体社区的技术人员)
---------------
写在前面
最近在利用业余时间学习本体的开发。我打算把自己学习的过程记录下来,一方面便于自己梳理学到的东西,另一方面希望可以通过笔记的共享,能使本体后来的开发者少走弯路。
由于是初学者,学习本体开发的过程中遇到了很多问题,在此,特别感谢本体社区的各位老师(宏雷、楚笙、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相关推荐
- 从零学本体dApp开发(20): 分片合约也有Runtime dAPI
原创 | 工匠 (来自本体社区的技术人员) --------------- 写在前面 最近在利用业余时间学习本体的开发.我打算把自己学习的过程记录下来,一方面便于自己梳理学到的东西,另一方面希望可以通 ...
- 从零学本体dApp开发(26):本体签名服务的API与Postman
原创 | 工匠 (来自本体社区的技术人员) --------------- 写在前面 最近在利用业余时间学习本体的开发.我打算把自己学习的过程记录下来,一方面便于自己梳理学到的东西,另一方面希望可以通 ...
- 区块链DAPP开发 以太坊智能合约框架有哪些
一.truffle(JavaScript) Truffle 是一个在以太坊进行 DApp 开发的世界级开发环境.测试框架. 使用 Truffle 开发有一以下优点: 内置智能合约编译,链接,部署和二进 ...
- 以太坊Dapp开发通过truffle部署合约
以太坊Dapp开发通过truffle部署合约 Truffle是一个非常流行 DApp 开发框架,他可以帮我们处理掉大量无关紧要的小事情,让我们可以迅速开始写代码-编译-部署-测试-打包DApp这个流程 ...
- java和以太坊交互_java类库web3j开发以太坊智能合约快速入门
web3j简介 web3j是一个轻量级.高度模块化.响应式.类型安全的Java和Android类库提供丰富API,用于处理以太坊智能合约及与以太坊网络上的客户端(节点)进行集成. 可以通过它进行以太坊 ...
- python智能合约编程_如何用Python Flask开发以太坊智能合约
将数据存储在数据库中是任何软件应用程序不可或缺的一部分.无论如何控制该数据库都有一个该数据的主控.区块链技术将数据存储到区块链网络内的区块中.因此,只要某个节点与网络同步,它们就会获得区块中数据的副本 ...
- 了区块链开放平台baas_区块链开放平台 BaaS 系统开发,区块链智能合约撰写服务...
区块链开放平台 BaaS 系统开发,区块链智能合约撰写服务 什么是区块链即服务? 区块链即服务是一种独特的经济模型,允许消费者使用基于云的服务来开发,使用和托管其区块链应用,功能和智能合约. 源中瑞 ...
- 使用hardhat开发以太坊智能合约-测试合约
Web3工具网站[点我访问] 现已上线,欢迎使用,如有好的意见和建议也欢迎反馈. 本系列课程: 第一节:使用hardhat开发以太坊智能合约-搭建环境 第二节:使用hardhat开发以太坊智能合约-测 ...
- 使用hardhat 开发以太坊智能合约-验证合约
Web3工具网站[点我访问] 现已上线,欢迎使用,如有好的意见和建议也欢迎反馈. 本系列课程: 第一节:使用hardhat开发以太坊智能合约-搭建环境 第二节:使用hardhat开发以太坊智能合约-测 ...
最新文章
- Java综合知识总结_数据库篇
- java-模拟存放String类型数据的栈
- Java题-直接赋值与重新创建内存
- TypeScript完全解读(26课时)_14.ES6和Nodejs中的模块
- Eclipse字符集环境配置
- python基础刷题_数据结构与算法LeetCode刷题(Python)
- C Primer Plus第三章总结
- [渝粤教育] 中国地质大学 大学英语(7) 复习题
- 【转】响应式布局和自适应布局详解
- 小米蓝牙耳机驱动_硬核拆解——小米蓝牙耳机
- php采标教程,国内液压与气动行业标准大全
- message from server: “Host is not allowed to connect to this MySQL server“问题的解决办法
- bzoj2548[Cstc2002]灭鼠行动
- 在线生成txt图案或者logo
- Codeforces Round #644 (Div. 3) E.Polygon
- via浏览器 html代码,网页黑色加强的css代码
- java计算两个日期的月数
- react-native-calendars的使用
- 微信小程序的测试方法,抓包,模拟
- 静电耳机与普通动圈或动铁耳机有什么区别
热门文章
- html 萤火虫特效,jquery萤火虫飞舞动画特效插件
- 清华刘知远提出CPT:基于预训练视觉-语言模型的跨模态Prompt-Tuning
- 第一章 Centos 简介与安装
- 河北大学生命科学学院期末Biopython编程实践。利用Biopython包读取新冠病毒(id:NC_045512.2)序列(GenBank格式NC_045512.2.gb),将其中FEATURE的类
- L1-058 6翻了 (15分)
- python代码练习,微信登入并生成头像大图
- 利用canvas开发一个绘图板
- sql dateadd 和datediff的用法
- matlab上确界距离,习题课PPT课件.ppt
- Jitter的基本知识