Qtum量子链设计文档--Qtum Core QT钱包设计(八)

量子链Qtum2018-07-11 12:25:00  阅读 -评论 0

Qtum量子链设计文档--Qtum Core QT钱包设计(八)点击上方蓝字关注QTUM公众号,了解最新行业资讯

Qtum量子链设计文档--Qtum Core QT钱包设计(八)

以下内容整理来自Qtum量子链吴明


Qtum原始设计文档汇总(8)-- Qtum钱包

钱包是所有用户最常用的区块链产品之一。Qtum根据不同用户的需求,提供了PC版的qt钱包、IOS/Android版的移动钱包、Electrum轻钱包以及web钱包等。每种钱包都有各自特点,并且仍然在不断迭代,以满足用户的新需求。以下设计文档详细记录了qt钱包及移动端钱包的设计及迭代过程。

以下截取部分早期Qtum开发团队针对Qtum各类钱包的相关原始设计文档(附中文翻译)。由于大部分设计文档只设计常规的应用开发内容,故本文不会逐一进行解读,仅选取部分与Qtum区块链相关内容进行解释。(ps:文档中QTUM,QTUMCORE以及QW为内部设计文档编号):

QW-2: Wallet Security (IOS) Description:As of right now the wallet is not secured so anyone who gains access to the phone can spend the funds. We need a four digit passcode or fingerprint. How is the wallet generated? A passphrase for generation and recovery purposes seems the best option. Task:钱包安全(IOS) 描述:到目前为止,钱包还不安全,任何能够使用手机的人都可以使用这些资金。我们需要一个四位数的密码或指纹。钱包如何产生?出于生成和恢复的目的,助记词(passphrase)似乎是最好的选择。 QW-3: Transaction Information (IOS) Description: Right now all the transaction information is hidden. Even the incoming transaction addresses are hidden. We need a screen for each transaction that shows the transaction information. Task:交易信息(IOS) 描述:目前所有的交易信息都是隐藏的,甚至连输入的交易地址都是隐藏的。对于每个交易,我们需要一个页面来显示交易信息。

上述两个任务完成了IOS钱包的加密及信息显示的相关功能。

QW-5: Create receive_server for qtum pay Description: New receive_server to be created in order to support qtum ay from external applications. Server to create addresses for all transactions up on request from the external app. Also to transfer all money to the registered address. Task:为qtum支付创建receive_server(接收服务器) 描述:创建新的receive_server是为了支持来自外部应用的qtum支付。 服务器可以根据外部应用程序的请求创建所有交易的地址。也可以将资金转移到注册地址。

上述任务实现了用于Qtum支付的接收服务器,可以从外部创建交易请求。

QW-6: Create mobile sdk for qtum pay Description: Create mobile sdk (for Android and iOS) to support in-app purchases being paid by qtum. Mobile sdk to do next actions: 1. send request to the receive_server with parameters to generate new address 2. send request to the receive_server to check status for required transaction 3. restore in-app purchases in case of re-installing the app or switching devices for user In addition implement pay by qtum that will open details where to transfer money and option to open qtum wallet Task:创建qtum支付的移动sdk 描述:创建移动sdk(用于安卓和iOS),支持用qtum支付的in-app purchases(程序内购买)。 移动sdk完成以下操作: 1.  向receive_server发送请求,并带有参数,以生成一个新的地址 2.  向receive_server发送请求以检查所需交易的状态 3.  恢复in-app purchases以防出现需要重装App或需要为用户转换设备的情况 除了实现qtum支付,还将开放转账的细节以及打开qtum钱包的选项。

上述任务详细描述了Qtum支付的移动sdk。

QW-8:Login and Sign Up screens based on a new design iOS Description:Implement new design with actual functionality for Login and Sign Up screens Task:新设计的iOS的登录和注册页面 描述:实现新设计的具有实际功能的登录和注册页面 QW-9: Implement QTUM balance screen based on new design iOS Description: Implement QTUM balance screen with all required functionality based on new design. Include Available and Not Confirmed balances feature Task:实现新设计的iOS的QTUM余额页面 描述:基于新的设计实现具有全部所需功能的QTUM余额页面。 包括”可用的余额“和”未确认的余额“特性

QW-10: Implement QTUM transaction details based on new design iOS Description: Implement QTUM transaction details based on new design. Include all current functionality including not confirmed transactions. Task:基于新设计的iOS实现QTUM交易细节 描述:基于新的设计实现QTUM交易细节,包括所有包含未确认交易的现有功能

上述任务任务对Qtum交易细节的显示进行了重新设计,方便用户查看交易信息。

QW-11: Implement navigation bar and Profile options based on new design Description: Implement navigation bar and Profile options based on new design Task:基于新的设计实现导航栏和配置文件选项 QW-12: Key generation for receive_server Description: New key-pair generation for receive_server (accepts address to which transfer all funds) Task:receiver_server的密钥生成 描述:receiver_server(接受地址,所有资金转移到该地址)的新密钥对生成 QW-13: Add Subscribe to Tokens to iOS Description: Add screens to restore Tokens in the wallet, list of all added tokens and token detailed view to the iOS mobile wallet Task:在iOS中,添加对tokens的订阅 描述:在钱包中,添加恢复token的页面,所有添加的token的列表以及iOS移动钱包的token详细视图 QW-14: Implement new design for login/sign up screens Android Description: Implement new design for Android wallet for screens: - Wallet Welcome screen - Create new wallet - Enter Pin - Save/Restore Brain-key Task:实现新设计的Android系统的登录/注册页面 描述:实现新设计的Android钱包以下页面: •   钱包欢迎页面 •   创建新的钱包 •   输入密码 •   保存/恢复Brain-key QW-16: Update system Description: After we update a new version of wallet, users don't know So we design an update system to check the latest update to inform users Let's compare latest github release version with users' version, if any updates notice them Task:更新系统 描述:我们更新钱包的新版本后,用户并不知道。 因此,设计一个更新系统来检查最新的更新并通知用户。 将最新的github发布版本和用户的版本进行比较,如果有任何更新就通知用户

QTUMCORE-39: Show staking information to the user in the Wallet Description: Update of the wallet if needed to get information for the staking and display them in a label in the GUI. The wallet need to be updated so will correctly display the available coins for spending not considering the allocated coins in the staking process. Task:在钱包中将staking(PoS挖矿)信息显示给用户 描述:如果需要,可以更新钱包以获取staking信息,并将它们显示在GUI的一个标签中。 钱包需要更新,这样,在不考虑staking过程中分配的币的情况下,钱包能正确显示可用于花费的币。

通过上述任务,Qtum qt钱包能够显示出正在staking的币,同时用户也能方便地知道可用于花费的币的总额,避免用户产生误解,影响其正常Qtum的收发。

QTUMCORE-63: Properly describe contract transactions in Qt transaction list Description: Right now if you deploy or send to contracts there is no description or indication what that transaction was. Additionally, there should be an indication that "mined transactions" from AAL refunds are a refund and not the wallet automatically mining by itself. Task:在Qt交易列表中正确地描述合约交易 描述:目前,部署合约或者发送到合约没有任何描述或者指示该合约是什么。此外,应该有一个指示,来自AAL(账户抽象层)退款的“挖矿交易”是一个退款而不是钱包本身自动挖矿的收益。

上述任务使Qt钱包能够区别显示普通交易及合约交易,避免用户混淆。

QTUMCORE-70: Qt wallet PoS features - Part 1 Description: •   Add staking on/off/disabled icon to the status bar (check BLK behaviour) •   PoS blocks show as received transactions in the wallet recent transactions and transactions, they should show as mined transactions (same as PoW) with only the reward+fees as value (check BLK behaviour) •   createcontract and sendtocontract transactions show as regular send to without address, they should show under proper category (create contract and call contract) and receiver address (hash160 of the contract) •   allow to filter transactions by contract transactions as well under transactions Task:Qt钱包PoS特性 -- 第1部分 描述: •   在状态栏添加开/关/禁用图标(检查BLK行为) •   在钱包最近的交易和交易中,PoS区块显示为已接收的交易,他们应该显示为只有奖励+费用值的挖矿交易(和PoW一样) •   createcontract和sendtocontract交易显示为没有地址的正常发送,他们应该显示在合适的类别下(创建合约和调用合约)且显示接收方地址(合约的hash160) •   允许通过合约交易来过滤交易,也可以在交易中进行过滤

上述任务为Qtum qt钱包增加了PoS挖矿的新特性,并且可以对挖矿开关进行可视化操作,使用户更加简单、直观地进行PoS挖矿。

QTUMCORE-78: Basic Qt wallet design changes and contract functions Description: Please check the attached PDF for a basic wireframe. Please ignore the QTUM to CNY boxes for now. Also the design is mostly about changing the layout and adding the contracts tab, please do not remove any existing elements from the current Qt wallet. Task:基本的Qt钱包设计修改和合约函数 描述:请查收PDF附件,可以看到一个基本的示意图。 请暂时忽略QTUM转为CNY的输入框。该设计主要是改变了布局并且添加了合约标签,请不要从当前Qt钱包中删除任何现有的元素。

QTUMCORE-79: Build OSX wallet on MacOS 10.10 Description: We need to build a static binary for Qtum-Qt on OSX 10.10 to run on all newer OSX versions Task:在MacOS10.10上构建OSX钱包 描述:我们需要为OSX10.10的Qtum-Qt建立一个静态的二进制文件,使其可以在所有较新的OSX版本上运行.

QTUMCORE-91: Add ABI interface to Qt wallet Description: Please check the attached PDF for a basic wireframe. Add the ABI interface to wallet. Tip: There is hyperlink in the PDF, when you click "Send" button in left, it will jump to the page "Send" 1. SmartContract_Create Page Add one input box of ABI interface where we can paste the json interface data. If doesn't input json data, the scroll box "constructor" is invisible. If json data is not empty, decode the data and check the "inputs" of "type: constructor" Maybe can use this file to do ABIDeserialise and ABISerialise https://github.com/qtumproject/cpp-eth-qtum/blob/1a8e6a4e492adb7b48eaea6cb9ad10b50a07ae92/libethcore/ABI.h { "inputs": [ { "name": "data_in", "type": "int256" } ], "payable": false, "type": "constructor" } "Constructor" scroll box will add the parameters to box according to the "inputs" and the input data type should be validated. For the optional box, "gaslimit" and "gasprice" should have a default value on the input box. If the user changes the value to a value >0.001, there should be a warning like "The Gas Price is too high, are you sure you want to possibly spend a max of [gasLimit*gasPrice] QTUM

上述任务为Qtum qt钱包增加了与智能合约调用相关的功能和ABI接口,即可以通过qt钱包进行智能合约的调用。

QTUMCORE-96: Fix the block download progress bar Description: The Qt initial blocks download screen shows 100% by default, even if the number of blocks to download is known. We need to have the following behaviour: if the number of blocks to download is unknown: progress bar should show 0% if the number of blocks to download is known: progress bar should show real progress % Task:修复区块下载的进度条 描述:现在的Qt钱包区块下载页面默认显示100%,即使要下载的区块数量是已知的。 我们需要修改成以下行为: 如果需要下载的区块的数量是未知的:进度条应该显示0% 如果下载的区块的数量是已知的:进度条应该显示实际的进度% QTUMCORE-100: QT wallet UI design Description: We have designed a new UI theme Please check the link for psd for design materials https://www.dropbox.com/s/jy1x0xin9e1uo79/2017-10-10%20PC%20WALLET%20.psd?dl=0 the jpg file is in attachment Task:Qt钱包的UI设计 描述:我们已经设计了一个新的UI主题。 请查收链接获取设计材料的psd https://www.dropbox.com/s/jy1x0xin9e1uo79/2017-10-10%20PC%20WALLET%20.psd?dl=0 图片文件在附件中。

QTUMCORE-107: Add a GUI restore function Description: Currently, our QT wallet only has backup function, doesn't have a gui restore function Users should replace wallet.dat manually, but many people don't know where to restore. So we need "Restore Wallet" after the "Backup Wallet" function. When user clicks on it, they can choose which backup data they want to restore and then restore the wallet. The restore functionality should work as follows: 1- open a dialog box where the user can select a wallet.dat file to restore, and where the user can select the option to salvage wallet (use -salvagewallet arg for qtumd) and another option to reindex, (use -reindex arg for qtumd), reindex should be the first option, salvage wallet the second. 2- After confirmation, all wallet functionalities should be stopped to avoid losing recent transactions (same behavior as when the wallet is getting encrypted), the old wallet.dat file should be backed up into wallet<timestamp>.bak (ie wallet1512031583.bak) then the selected file placed as wallet.dat in the datadir and qtum-qt restarted, if salvalge wallet is selected, qtum-qt should be started with -salvagewallet option, if reindex is selected qtum-qt should be started with -reindex option task:添加GUI恢复功能 描述:当前,我们的Qt钱包只有备份功能,没有GUI恢复功能。 用户应该手动地替换wallet.dat,但是很多人不知道怎样恢复。 因此在“备份钱包”功能后我们需要“恢复钱包”的功能。 当用户点击它,他们可以选择想要恢复哪个备份数据,然后恢复该钱包。 恢复功能使用方法如下: 1 -- 打开一个对话框,用户可以在对话框中选择一个wallet.dat文件进行恢复,用户也可以选择salvage钱包的选项(对于qtumd,使用-salvagewallet arg)以及另一个reindex的选项(对于qtumd,使用-reindex arg),reindex应该是第一个选项,salvage钱包是第二个选项。 2 -- 在确认后,应该停止所有钱包功能,避免丢失最近的交易(钱包加密时的行为一样)。旧的wallet.dat文件应该备份到wallet<timestamp>.bak(例如wallet1512031583.bak),然后将选定的文件放在datadir的wallet.dat中,并且qtum -qt重启,如果选择了salvage钱包,qtum -qt应该以-salvagewallet选项启动,如果选择reindex,则qtum -qt应该以-reindex选项启动

大多数用户无法通过命令行直接对钱包进行备份和恢复。上述任务在Qtum qt钱包中添加了钱包恢复功能,自此用户可以更加方便地恢复已备份的钱包。

QTUMCORE-110: Add "Don't use change address" option in Qt wallet Description:We need to add two options related to change addresses: 1- First option is mandatory and cannot be disabled, it's for token transactions, when a token transaction is sent and results in change, the change should be returned to the sender address 2- Second option can be enabled/disabled from wallet options, it should be called "Don't use change address", it should be off by default, when selected, when sending to an address, the change should be returned to the same address Note: please check sendtocontract rpc call code that uses coincontrol class to easily set the change receiver. coinControl.destChange=senderAddress.Get(); task:在Qt钱包中添加“Don't use change address(不使用找零地址)”选项 描述:关于找零地址,我们需要添加两个选项: 1 -- 第一个选项是强制的并且不能被关闭,它用于token交易,当token交易被发送出去并出现了找零的情况,找零应该返回到发送方的地址 2 -- 第二个选项可以从钱包的选项中打开/关闭,它应该被称作“Don't use change address(不使用找零地址)”,默认是关闭的。当该选项打开时,发送给一个地址的时候,找零应该返回到同一个地址中。 注意:请检查sendtocontract RPC调用代码,它可以使用类coincontrol很容易地设置找零的接收方。 coinControl.destChange=senderAddress.Get();

找零地址对于大部分不熟悉UTXO模型的用户来说不够友好。因此上述任务添加了“不使用找零地址”的选项,使“找零”自动找到发送地址。

QTUMCORE-111: Add the ability to save contract addresses and ABI, and load them Description: In Qt wallet, we need to add a save/load option for contract addresses and ABI that shows on all contract related views (send, call), it should show two options, save and load (on the right side of the textbox, like the buttons next to "pay to" in send), when saving, the data should be stored in a local file or similar after asking the user to specify an entry name, when loading a table should show to select one of the entries then automatically fill in the address and ABI. An option to remove entry with verification should be provided too. Functionality somehow similar to contacts. Task:添加保存合约地址以及ABI的功能,并加载它们 描述:在Qt钱包中,我们需要对合约地址以及显示在所有合约相关视图上(send,call)的ABI添加一个保存/加载选项,应该显示两个选项,保存和加载(在文本框的右边,就像在发送中“pay to”旁边的按钮一样)。当保存时,数据应该存储在一个本地文件中,或者类似的在要求用户指定一个entry名称之后,当加载一个表格时,应该显示选择其中一个entry然后自动地填入地址和ABI。 也应该提供一个选项,用于删除带有验证的entry。在某种程度上,该功能类似于合约。

上述任务在Qtum qt钱包中增加了保存和加载合约的功能,方便用户再次调用已保存的合约ABI。

QTUMCORE-121: Add selection border to recent transactions Description: We need to add a selection border to recent transactions in overview page, so that the user knows which row is selected and being displayed in details Task:为最近的交易添加选择边框 描述:我们需要在概述页面中为最近的交易添加一个选择边框,这样用户就知道选择哪一行,并详细地显示出来。 QTUMCORE-122: Add option to disable check for update Description: We need to add a checkbox under wallet preferences to disable checking for updates (check should be enabled by default, but we should allow users to disable it) Task:添加可以禁用检查更新的选项 描述:我们需要在钱包参数设置中添加一个复选框,用来禁用对更新的检查(检查默认是开启的,但是我们应该允许用户可以禁用它)。小结

Qtum qt钱包作为官方指定核心钱包,不但满足了普通用户收发QTUM即QRC20代币的需求,也满足了开发者对于部署和调用智能合约的需求。同时它还是唯一可以用于PoS挖矿的钱包。不仅如此,Qtum还先后推出了针对不同平台,不同需求的多款钱包,如支持SPV的轻钱包,支持在线使用的web钱包,支持移动端使用的移动钱包等等。相信随着Qtum社区的不断发展,会有越来越多的用户使用这些钱包,同时也会有很多第三方钱包诞生。本章的技术文档可以作为第三方钱包的参考,感兴趣的读者可以结合Qtum钱包的源代码对各任务进行详细解读。

Qtum量子链设计文档--Qtum Core QT钱包设计(八)


关注Qtum量子链(qtumchain)公众号,回复关键字查阅Qtum量子链相关资料,以下是部分文档关

回复:‘白皮书’,查看《Qtum量子链白皮书,设计原理,实现方案,及应用》

回复:‘未来’,查看《Qtum量子链未来2年技术路线规划-简略版》

回复:‘指南’,查看《首篇Qtum量子链区块链开发指南系列面世》

回复:‘专访’,查看《Nasdaq专访Qtum:区块链会成为世界最大的信任服务商》

回复:‘文档’,查看英文版本《Qtum量子链实现文档》

回复:‘中文文档’,查看中文版本《Qtum量子链实现文档》

Qtum量子链设计文档--Qtum Core QT钱包设计(八)

Qtum量子链设计文档--Qtum Core QT钱包设计(八)

声明:链世界登载此文仅出于分享区块链知识,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不构成投资建议。投资者据此操作,风险自担。此文如侵犯到您的合法权益,请联系我们kefu@lianshijie.com

参与讨论 (0 人参与讨论)

相关推荐

Cashbox研发工程师讲解SPV钱包开发重难点(一)

在公众号上一期的介绍中提到,Cashbox下一步将添加一个bitcoin完全去中心化的SPV钱包。下面我将从技术背景和实现方式两方面介绍bitcoin的SPV钱包。SPV的全称是简单支付认证。我们把这种运行SPV节点的应用,称为轻钱包。

Bebt交易所:深入分析自动化做市商发展掣肘与设计改进

Bebt交易所:深入分析自动化做市商发展掣肘与设计改进

在基于区块链的分布式系统 (如 Ethereum) 上重构一个新的金融世界时,必须认识到区块链世界与链下世界相比,有着完全不同的动态属性。最值得注意的是,链上并非连续计时,而是通过区块来量化时间的流逝。但因为它受到区块大小的限制,这又导致了延迟问题和计算能力的限制。由于这些结构上的差异,分布式金融的设计者应该具有与中心化世界的设计者完全不同的思路。例如,由于区块链的成本和技术基础设施,做市商在基于

不用私钥,备份这个你就能掌控钱包!

仍在使用上述旧版本的用户请尽快下载升级至 imToken 2.0 最新版本,体验更稳定优质的钱包服务。这也是为什么在身份钱包中,只要备份一个助记词就相当于备份了不同公链的钱包。

DeFi必备技能,一文教你如何保护自己的以太坊钱包

那如何在体验五花八门的DeFi新应用的同时,最大限度地保护自己呢?但只要掌握一些技巧,你就可以保护自己。

投资加密货币,为什么需要一个安全的钱包?

可以把部分资产放在imToken热钱包,做更长周期的资产就放在冷钱包,充分保障资金的安全问题。Tokenlon支持的币种,存在imToken钱包。这既保障了资产安全,减少了从中心化交易所提现的支出,又可以在需要交易时直接在钱包内快速兑换。

体验过四款硬件钱包之后,总结的硬件钱包购买建议

再比如,笔者之前也发现一些项目方专门会开发适配ledger或者trezor的的钱包程序,用户只要将硬件钱包连接电脑,打开项目方给的钱包软件,就可以使用这两款硬件钱包了,这在一定程度上说明了这两款硬件钱包还是很受到关注的。

手把手教你把币从交易所提到钱包

Hey,童鞋们~最近交易所频频出事,不少人开始把自己的资产从交易所提到钱包。下面就以 USDT 为例,手把手教大家如何把币从交易所提出转至 imToken 钱包。

Alaya钱包使用教程

首先,需要注意获得Alaya钱包地址须将ATON钱包更新至0.13.2及其以上版本,更新后将自动获得Alaya钱包地址。Alaya用ATP来刻画何为「信任」。

麦妖榜
更新日期 2019-09-03
排名用户贡献值
1牛市来了30910
2BitettFan24187
3等待的宿命23810
4区块大康20369
5六叶树20310
6linjm122719429
7天下无双16192
8lizhen00215280
9让时间淡忘14586
10yelanyi050511349
返回顶部 ↑