以太坊(ETH)场外交易所的实现(逻辑)

有几个月没更新博客了,年前到现在确实太忙了,每天接触新东西有点精力跟不上,打算把这几个月做的事整理总结出来,想到哪些就写哪些了。

这几个月做了加密货币的场外交易平台,目前只做了基于以太坊的交易,这篇先写个平台的整体逻辑。

场外交易所的技术门槛很低,因为涉及到法币(人民币)的逻辑都是在用户线下完成,所以用到区块链相关的技术,只有充值和提币的部分,剩下的就是普通的web开发工作。

实现网站的人员配备原因,只有我和一个新来的前端工程师,进度很急,所以后端语言选了最熟悉的ruby on rails,编写api和后台管理工具;前端选择了react,因为前端工程师之前用vue,想学一下react,正好react我也比较熟悉,后面可以跟着一起写页面。web方面的开发就不多说了,没什么新鲜东西,主要写以太坊相关的技术应用。

拿ETH举例,场外交易所的逻辑就是,用户把ETH充值到我们的平台,然后通过站内交易,用户只在数据库层面转移余额,用户可以随时提币到自己的ETH钱包。看了很多老牌场内交易所的充值提币机制,最后的逻辑是这样的:

用户注册(最开始注册后用ActiveRecord的after_create回调生成以太坊钱包绑定用户,但是后面监控以太坊主网ETH余额效率很低,就改成用户有充值需求时,点进去充值页面才会生成绑定一个以太坊钱包),这样每个用户会对应一个新的服务器生成的钱包,用户需要充值时,就往这个钱包里转账,后台定时每五分钟跑一次检查这些钱包的余额,并同步加到用户余额;每天再运行一次监控钱包余额,把钱包里的余额转账到一个钱包里(热钱包,用于集中用户充值的币和给用户提币转账);提币就是通过多步身份验证,通过验证确认的提币请求会被记录,并冻结用户的余额,同样是每五分钟跑一次检查未被处理的提币请求,执行转账操作,从热钱包直接转账给用户输入的钱包地址;另外有一个冷钱包,也就是硬件钱包,服务器不会管理私钥,当热钱包里的币足够多的时候,转移一部分到冷钱包,这个就算是安全方面的准备了,防止服务器被攻破,一次性损失全部的钱。

具体实现这些花了我大量时间去研究,所以我想写的详细一点,会在之后的博客里分模块记录,坑还是真的多,深刻认识到“以太坊目前就是一个巨大的beta版本,充满bug”,也非常有感触,这样一个充满bug的东西就可以产生这么多价值,期待以太坊未来的发展。

猜你喜欢

转载自blog.csdn.net/qq_28505809/article/details/83926345