刚开始的时候我们想解决的问题是上次BeyondBlock 研讨会时出现率过低的问题,这也是免费活动经常会遇到的情况,通常出席率会落在六成到七成之间。而Taipei Ethereum Meetup 是因为大家的热情聚集并且一同组织活动,大家花费了很多心力举办活动,出席率不彰自然容易浇熄热情,所以这也是我们上次活动后就想要解决的问题。

首先我们刚开始想做的是押金制,想要透过智能合约收取押金后,在使用者证明出席后退回押金。

不过这次的活动因为想租用更好的场地来容纳更多观众,经过社群组织人的讨论后,决定应该要改用付费制,在这个当下其实我们已经把押金制的系统建置大约六成并且在社群内进行内部测试了,所以我们又很紧急的将系统改成付费制的报名系统,这也是最后大家看到的报名网站。

当然去除掉押金设计,整个智能合约的功能也会比较简化,仅需要处理付款之后纪录钱包地址即可。

整个系统并不是完全的去中心化应用,而是混合了中心化与去中心化技术。网站采用react.js 开发,并且透过ethjs 连接MetaMask 并且接入区块链。而电子邮件与报名者名字则因为个人隐私考量没有放在区块链上面,而使用中心化的Firebase 资料库储存这些资讯。

我们的智能合约放在下面:部署时需要提供几个参数:

  1. 钱包地址:活动结束后会需要把ETH报名费汇出到一个钱包
  2. 参与人数:整个活动的参与人数上限
  3. 报名开始时间:只有在开始报名后智能合约才会接受报名

当使用者前往报名页面后,系统将会透过eth.js 与MetaMask 连接这次报名所使用的智能合约,并且取得智能合约中的目前报名人数资讯。

首先要满足几个条件才可以开始报名:(1) 报名时间已经开始(2) 参与人数还没到达上限(3) 使用者呼叫报名的函式时有附上超过0.015 的ETH。

当以上条件都满足时,填妥资料送出后会发出一个Transaction 到区块链上,当此笔交易成功时你的钱包位址将会被登录入区块链中的智能合约。

在此同时我们也会将电子邮件与报名者名字纪录在Firebase 资料库当中,并且透过电子邮件送出报名相关资讯。我们的报到机制因为考虑到现场要如何简易的验证使用者的资讯,仅采用使用者出示系统所寄送的电子邮件作为证明。

整体来说在这个报名系统中,去中心化平台负责了跟资产相关的逻辑:报名费、入场资格;中心化服务则负责了储存个人隐私资讯以及寄送电子邮件的功能。

当然这样的售票方式是一个实验,过程中间也遇到一些问题待解决。

首先第一个问题就是有数个使用者希望一次买多张票,但当初没有这样的设计,导致有这样需求的人必须切换不同钱包地址来购买多张票卷,这是个可以在智能合约里面改进的地方。

另外由于我们寄送信件是透过Firebase 的寄信功能,寄信的时间点在新增资料到Firebase 资料库时即寄出信件,但是资料进入资料库时并不保证交易已经成功,导致后台系统还需要额外确认资料库里面记录的钱包地址是否有完成交易取得票卷,这也是可以透过ethereum event 更好的处理,或是也可以考虑完全移除Firebase 的依赖。

最后其实电子邮件当初是因为需要发出报名资讯方便当天报到所以才额外在Firebase 纪录,但是也可以透过其他方法处理报到流程,进而让这个系统脱离对Firebase 中心化资料库的依赖。

其中一个可以的做法是当报名成功后,让使用者再次透过MetaMask 签名特定讯息,并且将签名后的结果产生成qrcode,并且提示使用者妥善保存此qrcode 作为出席的依据,在报到时可以利用此qrcode 确认这是由特定钱包签名过的资讯作为入场依据。

区块链技术的报名系统适合吗?

当我们开放报名的那天,我心里还在反覆思考到底使用这样的报名方式到底恰不恰当。随着票券售馨,加上当天超过九成的出席率也让我放下心中的大石。其实当使用者已经花了不少心力搞清楚怎么用区块链报名时,不够感兴趣的使用者都放弃了,最后完成报名的出席活动的机率当然会非常的高。

但这也是个双面刃,这样的报名方式的技术门槛还是不低,首先要有ETH 以外,还需要安装MetaMask 并且利用它完成报名。采用这样的报名方式,短期看来还是比较适合采用在跟Ethereum 相关的技术型活动。

当然我们也期待有更好的基础建设可以让所有人使用区块链技术时都可以变得非常简单的那一天 — 就如同现在大家都可以轻松的透过浏览器上网际网路一般

采用以太坊智能合约技术的报名系统源码相关推荐

  1. 区块链技术进阶-深入详解以太坊智能合约语言 solidity(含源码)-熊丽兵-专题视频课程...

    区块链技术进阶-深入详解以太坊智能合约语言 solidity(含源码)-103人已学习 课程介绍         区块链开发技术进阶-深入详解以太坊智能合约语言 solidity视频培训教程:本课程是 ...

  2. 区块链兼容以太坊智能合约

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 引言 随着区块链技术以及应用的普及,越来越多的区块链出现在大众视野中.由于区块链技术的开源特性,任何公司和个人都可以方便 ...

  3. Python开发以太坊智能合约指南(web3.py)

    在以太坊上获得一个基本的智能合约是一个很简单的事,只需google查询"ERC20代币教程",你会发现有关如何做到这一点的大量信息.以编程方式与合约交互完全是另一回事,如果你是一个 ...

  4. Python以太坊智能合约开发指南

    在以太坊上获得一个基本的智能合约是一个很简单的事,只需google查询"ERC20代币教程",你会发现有关如何做到这一点的大量信息.以编程方式与合约交互完全是另一回事,如果你是一个 ...

  5. 以太坊智能合约开发 | 一个资深技术专家的心路历程

    原创: 杨镇 一块链习社区 微信号yikuailianxishequ 本文作者杨镇, 以太坊黄皮书中译者,资深以太坊专家.曾独立中译了以太坊 Homestead 官方文档,Solidity 官方文档中 ...

  6. 以太坊智能合约入门项目-众筹项目

    一.智能合约 智能合约(英语:Smart Contract)是一种旨在以信息化方式传播.验证或执行合同的计算机协议.智能合约允许在没有第三方的情况下进行可信交易.这些交易可追踪且不可逆转.智能合约概念 ...

  7. 以太坊智能合约Demo

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 智能合约开发用solidity编程语言部署在以太坊这个区块链平台,本文提供一个官方实战demo示例快速入门,用demo例 ...

  8. 以太坊智能合约开发第二篇:理解以太坊相关概念

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 很多人都说比特币是区块链1.0,以太坊是区块链2.0.在以太坊平台上,可以开发各种各样的去中心化应用,这些应用构成了以太 ...

  9. 使用Remix编译和部署以太坊智能合约

    链客,专为开发者而生,有问必答! 此文章来自链客区块链技术问答社区,未经允许拒绝转载. 使用Remix编译和部署以太坊智能合约 Remix 是一个开源的 Solidity 智能合约开发环境,提供基本的 ...

最新文章

  1. 【数据库】MySQL的C语言接口学习
  2. 从原理到实现,详解基于朴素ML思想的协同过滤推荐算法
  3. MySQL-MongoDB开源监控利器之PMM
  4. python爬虫运行不出结果_请问这个为什么就是爬不到,运行之后电脑卡的不行,求大佬指导...
  5. android系统电视缺点,高清智能电视安卓系统优势与不足解析
  6. ise verilog多模块编译_如何使用ISE高效开发Verilog项目(新手)
  7. DWZ富客户端框架设计思路与学习建议
  8. Talib技术因子详解(七)
  9. 华为简单静态路由配置
  10. cad二次开发的一些简单入门实例
  11. 北航计算机学院考研英语一还是二,2018北京航空航天大学计算机考研经验分享...
  12. 09.第十章.项目沟通和干系人管理
  13. 重装系统后git库不能使用_重装系统后git库初始化
  14. linux 检查系统丢包,Linux系统网络丢包问题解决
  15. gtx660 linux驱动下载,佳能 NVIDIA GeForce GTX660 GPU 驱动程序下载-更新佳能软件(显卡)...
  16. html实现画板的基本操作,javascript实现画板功能
  17. nopCommerce 介绍其它
  18. 风光互补发电系统实训装置QY-GF05
  19. smbms超市管理系统项目总结
  20. 地理可视化引擎 L7 2.0 发布,让地图动起来

热门文章

  1. WPF MDI窗体的实现方法
  2. Mysql 四舍五入 取整
  3. scipy.sparse的一些整理
  4. 4篇高水平论文认定A类博士!享税后120万安家费!直接入编,三年副教授待遇...
  5. CAD高低版本互转,版本转换知识
  6. 提高生产力:Web开发基础平台WebCommon的设计和实现
  7. dcp9020cdn可以打印a3纸吗_印品质量 细节对比_兄弟 9020CDN_办公打印评测试用-中关村在线...
  8. 数据帮助企业决策案例_大数据可以如何帮助您的企业
  9. C++面试-interview
  10. 从阵容再到内容,跨年晚会们重寻“流量密码”