当前位置: 首页 > news >正文

手机浏览器网站开发微信公众平台推广费用

手机浏览器网站开发,微信公众平台推广费用,黑群晖的做网站文件,深圳市建设工程合同备案网站EOS Asia本教程原文作者为EOS Asia#xff0c;亚洲最具技术实力和最国际化的EOS超级节点竞选者。EOS Asia 同时也是EOS Gems和Traffic Exchange Token这两个项目背后的开发者。本文由 DappReview 获得 EOS Asia 授权进行翻译并发表。本篇是EOS智能合约系列第二弹#xff0c;该…EOS Asia本教程原文作者为EOS Asia亚洲最具技术实力和最国际化的EOS超级节点竞选者。EOS Asia 同时也是EOS Gems和Traffic Exchange Token这两个项目背后的开发者。本文由 DappReview 获得 EOS Asia 授权进行翻译并发表。本篇是EOS智能合约系列第二弹该系列教程旨在帮助开发者从0到1快速上手如何在EOS生态下开发DApp。如果有任何希望深入讨论的主题欢迎留言给我们如果你还不知道怎么在EOS下部署智能合约请先阅读系列第一弹《[技术教程]EOS智能合约开发第一节——准备发车》在大部分的应用场景中开发者都需要通过智能合约与区块链上“永久保存”的数据进行交互。本次教程中我们会一起通过 To-do List待办事项这个实例来教会你如何实现与数据交互的标准操作CRUD - Create, Retrieve, Update, Delete深入了解 Boost.MultiIndex由于EOS的智能合约基于C我们需要利用Boost.MultiIndex Containers这个库。下面是该库的说明Boost多索引容器库提供了名为multi_index_container 的类模板可以用于建造拥有一个或多个索引(indices) 的容器不同的索引具有不同的排序和访问语义。这些索引都提供了类似于STL容器的接口因此使用起来也非常相似。在一组元素之上维护多个索引的想法来自 于关系数据库并且考虑到简单的set和map无法满足多索引表中的复杂数据结构的规范。让我们把上述的一些概念拆分讲解一下并与开发者所熟知的传统数据库概念做类比容器Containers包含很多元素的类table/表元素Elements数据对象rows in a table/表中的行接口Interface容器读取元素的方法query/查询在EOS智能合约中可以使用 eosio::multi_index 来定义多索引容器。如果我们读一读使用了这个特性的一些合约例子比如这个“骰子合约”https://github.com/EOSIO/eos/blob/master/contracts/dice/dice.cpp你会发现很难真正搞明白到底是哪一部分是在处理区块链上的数据。不过别担心我们会带你理解它很快你就能自己实现一个有存储功能的智能合约。我们将通过开发一个To-do List 待办事项表小DApp来理解上述的内容。从功能上要能勾掉已经完成的事情添加新事项以及删除不需要的事项。在这个例子中我们将用 todos 作为容器名todo 作为元素结构。从初始化第一个容器为开始首先我们向 eosio::multi_index 传入两个模板参数。第一个参数是我们的容器名第二个参数是定义元素的数据结构。来给我们的todo模型创建一个小例子如下struct todo {uint64_t id;uint64_t primary_key() const { return id; }EOSLIB_SERIALIZE(todo, (id)) };typedef eosio::multi_indexN(todos), todo todo_table; todo_table todos;简单有效我们简单地定义了一个64位无符号整型的ID并通过primary_key来访问它。把多索引定义成typedef暂时还不需要把它实例化。目前为止这个todo模型里面还没有什么东西下面来添加一些参数:struct todo {uint64_t id;std::string description;uint64_t completed;EOSLIB_SERIALIZE(todo, (id)(description)(completed)) };typedef eosio::multi_indexN(todos), todo todo_table; todo_table todos;现在我们更近了一步加入了待办事项的描述参数- description 比如 “完成小说撰写”和状态参数- completed用来记录一个事项在当前是否完成了。为了方便自动生成我们的ABIApplication Binary Interface我们在容器定义前面加一行注释来帮助生成器abi table profiles i64那么在注释里的 i64 是什么意思呢它是我们的查询索引。默认情况下我们需要一种在容器里查询元素的方法而我们的前64位64位类型下基本上是first key就可以用来干这件事。一般情况下都用uint64_t id 对于first key也可以用 account_name 类型因为在底层其实 account_name 类型也是一个 uint64_t 类型。参考如下https://github.com/EOSIO/eos/blob/2f2c8c7e3811caca178a7553192c8fe59a22576d/contracts/eosiolib/types.h#L22此时我们应该有了一个功能简单的容器, 代码看起来是这样的// abi table todos i64 struct todo {uint64_t id;std::string description;uint64_t completed;uint64_t primary_key() const { return id; }EOSLIB_SERIALIZE(todo, (id)(description)(completed)) };typedef eosio::multi_indexN(todos), todo todo_table; todo_table todos;使用你的新容器现在已经有了一个定义好的容器我们可以使用它里面的元素。在智能合约里将通过不同的函数与这些元素进行交互。对于链上的永久性储存有四种基本函数创建(Create)检索 (Retrieve)更新 (Update)删除 (Delete)。 在这个例子里我们不需要考虑检索因为检索是由前端读取合约来处理的而不用函数。对其他的三个我们将分别创建函数。创建Create- 创建事项添加一个待办事项进入列表可以用 emplace 完成// abi action void create(account_name author, const uint32_t id, const std::string description) {todos.emplace(author, [](auto new_todo) {new_todo.id id;new_todo.description description;new_todo.completed 0;});eosio::print(todo#, id, created); }一个重要细节是我们把author作为一个参数也传入了。在 emplace 方法中第一个参量是必须的。更新Update- 完成事项创建一个完成事项的函数可以通过更新参数completed 的状态来实现// abi action void complete(account_name author, const uint32_t id) {auto todo_lookup todos.find(id);eosio_assert(todo_lookup ! todos.end(), Todo does not exist);todos.modify(todo_lookup, author, [](auto modifiable_todo) {modifiable_todo.completed 1;});eosio::print(todo#, id, marked as complete); }删除Delete- 删除事项这是一个内部调用的智能合约不用太担心安全性和权限问题。 我们专心搞清楚删除函数如何最简化地实行就可以了// abi action void destroy(account_name author, const uint32_t id) {auto todo_lookup todos.find(id);todos.erase(todo_lookup);eosio::print(todo#, id, destroyed); }部署测试与前端打通在上一篇教程中我们用一个简单的ping/pong实例讲述了如何将一个EOS的智能合约与网页前端连接起来。现在我们有了几个与区块链上的永久性数据交互的函数下面可以为这个待办事项制作一个前端了。部署部署合约的过程比较直观就下面这几步1. 建立合约ABI和WASMeosiocpp -o hello.wast hello.cpp eosiocpp -g hello.abi hello.cpp2. 建立账户/钱包cleos create account eosio todo.user EOS7ijWCBmoXBi3CgtK7DJxentZZeTkeUnaSDvyro9dq7Sd1C3dC4 EOS7ijWCBmoXBi3CgtK7DJxentZZeTkeUnaSDvyro9dq7Sd1C3dC4 cleos set contract todo.user ../todo -p todo.user3. 测试合约也很简单$ cleos push action todo create [todo, 1, hello world] -p todo.user executed transaction: bc5bfbd1e07f6e3361d894c26d4822edcdc2e42420bdd38b46a4fe55538affcf 248 bytes 107520 cycles # todo todo::create {author:todo,id:1,description:hello world}todo created4. 获取数据$ cleos get table todo todo todos在前端测试在这里我们就节省读者的时间不在文章中深究React.js的代码了不过我强烈推荐大家去看下这个例子的代码仓库里面有前端部分的全部代码 https://github.com/eosasia/eos-todo如果你希望我们去更深入地探讨一些关于浏览器前端和EOS智能合约交互的内容不论是用React、Vue、Angular还是原生Javascript欢迎留言或者在电报群里告诉我们。电报群https://t.me/EOSAsiaDAppReview往期精选[深度干货]浅谈你们根本不懂的区块链游戏V神看好的Plasma使用指南第一卷游戏落地[技术教程]EOS智能合约开发第一节——准备发车爆发前夜的区块链游戏——最大的特洛伊木马已经进城[独家专访]1周13W交易的EtherGoo开发者James 你所不知道的数据区块链游戏生态抢滩登陆战谁能拔得头筹
http://www.pierceye.com/news/107106/

相关文章:

  • 网站的收录情况怎么查企业网银怎么登录
  • 网站开发会计处理wordpress阅读随机增加
  • 兰州做网站公司哪家好公司网站建设是什么意思
  • 小区物业管理网站开发报告deal 网站要怎么做
  • seo站长助手wordpress 注册侧边栏
  • 做网站是要编程吗那些网站是html5做的
  • 网站开发图在网站做电子画册
  • 怎样建一个英文网站wordpress 多用户商城
  • 制作一个自适应网站源码app在线生成器
  • Dw做html网站项目管理软件有哪些
  • 天津网站建设定制软件开发服务公司
  • 做企业网站cms减肥网站源码
  • 建设工程检测预约网站猎头公司怎么找
  • 北京网站手机站建设公司手机网站开发常用工具
  • 太原做网站联系方式论坛的网站开发项目
  • drupal 做的网站网站设计与网站制作
  • 我要表白网站在线制作wordpress朗读句子插件
  • 黑龙江建设网官方怎么提高seo关键词排名
  • 拍卖网站开发多少钱十堰秦楚网招聘公告
  • 区域城市分站网站怎么做慈溪网站开发
  • 广州天河网站制作互联网十创业项目
  • 百度是不是只有在自己的网站发布才会被收录完备的常州网站优化
  • 响应式网站开发需要的条件百度信息流广告推广
  • 英文网站建设推广joomla drupal wordpress
  • 什么网站做简历免费下载怎么申请专线访问国际网络
  • 南三环做网站的公司网站开发开题报告计划进度安排
  • 我想建一个网站怎么建微信 网站提成方案点做
  • 苏中建设集团官方网站网络推广文章的方法
  • 月嫂云商城网站建设切换国外ip的软件
  • 沧州网站建设 凯航怎么样建立一个网站