我们如何建立加密货币支付系统:五个主要问题

哈Ha! 与之联系的是B2Broker,这是经纪和交易行业的流动性和技术解决方案的提供商。 我们的产品之一是B2BX.exchange交易平台。 当我们于2017年夏季推出该平台时,我们考虑了如何接受加密货币以及使用何种处理程序。 las,当时没有人准备为合同的脆弱性提供至少任何保证,而且DAO平台遭到攻击的故事还在听证会中。 我们不想跟随DAO的脚步。 此外,我们在通过区块链接受付款方面有一些经验。 因此,我们决定独立制定区块链支付的整个周期。 在这篇文章中,我们将讨论我们做了什么,最有趣的是,我们在过程中必须解决哪些问题。


资料来源:涟漪币新闻网

在使用支付系统的过程中,我们意识到我们不仅可以为B2BX.exchange平台提供服务,而且可以提供完全独立的产品。 我们称其为B2BinPay。

B2BinPay由什么组成


支付系统分为几个基本部分。 所有这些都是用PHP编写的。

系统的第一部分负责与区块链进行交互,即接收,发送和跟踪付款。

第二部分是API。 他从事与服务和交换的消费者的交互:通知资金接收,进行加密货币交换。 该API是使用Laravel框架编写的。

第三部分是消费者收货处。 它反映了整个系统的状态,关联的钱包及其余额,活动的交易和帐户。 也许很快,我们将连接经典的法令收购。 为了创建办公室,我们使用了Yii2。

一个单独的模块是用于ICO项目的系统。 它允许您在销售的所有阶段分配代币。 除此之外,还可以开发合同(ERC-20)和个人帐户。 使用这些工具,我们提供了交钥匙ICO服务。



出于安全原因,有关钱包的所有数据均以加密形式存储在数据库中,因此,即使攻击者可以访问它们,他也将无法从钱包中提取资金。 已连接两因素用户认证。 最后,商人可以创建可以与API一起使用的IP地址白名单。

我们为大量服务器(包括备用服务器)提供系统容错能力。 每个区块链节点都位于单独的服务器上,外部访问受限。

我们遇到了什么问题?


区块链是不同的。 一些文档记录不充分,没有活跃的社区。 这主要是造成我们主要问题的原因。

1.以太坊API不具有返回传入账户交易清单的功能

创建帐户时,我们的付款系统会生成一个唯一的地址,用户必须将所选币种的一定金额转入该地址。 在给定的频率下,我们获得传入交易的列表并验证其钱包地址。 然后,我们用未付帐单的地址验证钱包的地址。 事实证明,广播不允许接收有关传入交易的信息。

怎么办 我们决定使用第三方服务etherscan.io接收交易。 但是他发现了一些问题,因此我们改用了Explorer,这是由程序员编写的服务。

2.一些区块链的文档非常稀缺

这是一个典型案例:以某种方式,我们将节点部署到了鲜为人知的一种加密货币中,几天后,它停止接受交易,而没有报告任何错误。 我们重新启动了它,但是几天后情况再次发生。

怎么办 当他们开始弄清楚这个问题时,他们发现问题出在配置文件中的一个参数中。 文档中没有关于此参数的字词,因此我必须通过反复试验来配置所有内容。



3.很难或根本不可能部署用于测试功能的私有区块链

一旦我们需要为NEO加密货币部署区块链。 我们找到了一个就绪的docker映像,按照说明进行了所有操作,但出现了错误。 快速分析脚本不会导致任何结果,Google也不会提示任何情况。

怎么办 我们在github上创建了一个问题,花了一个月的时间讨论它,最后决定部署testnet。 但并非每种加密货币都有测试网。 而且,如果这样做了,那么通常您需要发送测试币申请并等待一段时间。 在大多数情况下,甚至都没有考虑在官方站点上开发私有区块链,因此您必须使用第三方解决方案。

公平地说,值得一提的是,在大多数情况下,您可以获得与特定加密货币基础设施有关的问题的答案。 从这个意义上说,最有用的资源是Github,那么您应该去官方论坛和Reddit。

4.不适当的代码重用

比特币最终会在单个区块链和区块上有很多副本-不要将它们与分叉混淆。 在大多数情况下,此类加密货币具有完全相同的比特币API。 为了不重复相同的代码,使用此类副本时,我们使用与使用中本聪货币相同的类。

但这可能不是那么简单。 当我们需要集成Dogecoin时,我们遵循描述的场景,配置并部署了测试网。 结果,一些测试失败了,创建交易时出现了问题。

怎么办 首先,我们通过调试器运行测试。 事实证明,在创建交易的请求中,狗狗币不允许像比特币那样以字符串形式转移金额。 因此,我们必须在子类中重新定义该方法。 顺便说一句,这是狗狗币和比特币API中唯一可识别的区别。 它的含义是无法理解的。

5.并非所有的加密货币都允许生成无限数量的唯一地址

这里的一切都很简单:没有这一代人,我们将无法在地址上使用付款标识。

怎么办 在这种情况下,我们在发送付款时会使用附加到交易的唯一消息。 不幸的是,有些客户忘了指出这些消息,然后想知道为什么付款没有自动记入贷方。

如何整合到CMS中?


我们为WordPress,Woocommerce,Magento,PrestaShop开发了B2BinPay插件。 食欲随之而来-最初我们不打算通过CMS插件来推广该系统。 对于每个插件,我们在系统中进行了检查。 最严重的事情发生在Magento插件上,我们将告诉您有关此评论的更多信息。

审查分为两个部分-技术和市场营销。 技术检查包括四个阶段:

  • 代码嗅探器
  • 安装和清漆测试
  • 复制粘贴粘贴检测器
  • 手动质量检查

前三个阶段是完全自动化的,因此最好在开发阶段考虑一些事项。 为了简化测试过程,首先,您需要记住Code Sniffer的规则。

Magento的Code Sniffer规则符合PSR-1和PSR-2标准,这是为数不多的CMS之一,其开发人员坚持使用PHP进行现代开发。 此外,Magento的专家还发布了一组单独的规则,这些规则有助于发现扩展结构的xml配置中的错误,并补充了公认的检查。 用于检查完成包内容的脚本也发布在其github帐户上,在发送您的开发以进行自动验证之前,也应使用该脚本。

基本的Magento安装包含phpunit的引导类:您可以使用它为插件编写测试。 坦白地说,我们仍然不确定是否可以通过测试来快速完成技术审核。



技术检查的前三个阶段是自动的。 对于第四阶段和“市场营销审查”,您必须要有耐心:这两个过程都是由人执行的,因此会形成队列。

我们等待手动质量检查的结果大约5天,这基本上是正常的。 但是我们的每份“营销评论”申请都已经处理了一个多星期。 在这里,对于测试人员而言很重要的一点是,我们在第一段中写下了我们提供的服务及其定价模型的集成,然后才表明我们插件的优势。

未来计划


我们认为B2BinPay与用户的互动非常简单,因此对于需要稳定和安全产品的加密货币市场和高级业务(例如在线销售领域)的新公司来说都是方便的。

在最初的硬币流通开始时,我们接受了比特币,比特币现金,莱特币,DASH,以太坊,门罗币等货币。 现在,我们在爱沙尼亚公司下为企业客户提供商人和钱包服务,为此我们获得了两个许可证-交换加密货币和钱包。

在为客户提供服务时,我们会为每个商人建立一个完整的KYC,然后商人可以开始接受自动转换为美元,欧元或英镑并支付到商人银行帐户的加密货币。

我们将很乐意回答您有关B2BinPay的创建以及产品本身的问题。 此外,我们现在正在积极寻找具有Python编程技能并准备加入我们团队的志同道合的人。 现在在圣彼得堡,我们为团队负责人和高级开发人员开设了空缺职位。 我们期待着您的简历!

Source: https://habr.com/ru/post/zh-CN441338/


All Articles