dash-docs/quality-assurance/schemas/wallets.yaml
2017-07-31 11:13:06 +02:00

223 lines
7.9 KiB
YAML

---
# This file is licensed under the MIT License (MIT) available on
# http://opensource.org/licenses/MIT.
id: https://bitcoin.org/quality-assurance/schemas/wallets.yaml
description: The wallet object
type: object
required:
- id
- title
- titleshort
- compat
- level
- platform
# additionalProperties can not be true, as then the wallet fails due to license
properties:
id:
description: The page identifier to use for translations
type: string
title:
description: The full wallet name; displayed when you view the full listing
type: string
minLength: 1
maxLength: 100
titleshort:
description: A short name displayed on the overview page
type: string
minLength: 1
maxLength: 20
## TODO: change this into an array so we can practically test values
compat:
description: A complete list of platforms supported by the wallet
type: string
minLength: 1
## TODO: we should probably use names here and translate to
## numbers (if required) in the template
level:
description: |
The wallet's overall security level.
1 - full nodes
2 - SPV using random servers (e.g. P2P SPV, Electrum servers, etc...)
3 - Hybrid & multisig wallets
4 - Web wallets
type: integer
minimum: 1
maximum: 4
## The platforms the wallet supports
platform:
description: the platforms the wallet supports
type: array
additionalProperties: false
items:
type: object
additionalProperties:
- default
required:
- os
- name
properties:
name:
type: string
enum:
- desktop
- mobile
- hardware
- web
os:
description: The specific operating systems the wallet supports
type: array
uniqueItems: true
items:
description: List of operating systems with wallet details
type: object
required: &required
- name
- text
- link
- screenshot
- check
## TODO: Not currently required, but we should aim for making it required #
# - source
additionalProperties:
- privacycheck
properties:
name:
type: string
enum:
# mobile os
- android
- windowsphone
- blackberry
- ios
# desktop os
- windows
- mac
- linux
# pseudo web os
- web
# pseudo hardware os
- hardware
text: &text
description: >
The identifier for the wallet's translation string.
Also used for the wallet's icon within the /img/wallet/
directory.
type: string
link: &link
description: The download URL
type: string
format: uri
source: &source
description: The source code download URL
type: string
format: uri
screenshot: &screenshot
description: File name for screenshot within the /img/screenshots/ directory
type: string
check: &check
description: The wallet's features (or lack thereof)
type: object
required:
- control
- validation
- transparency
- environment
- privacy
## TODO: make required when web wallets moved
# - fees
additionalProperties: false
properties:
control:
description: How much control the user has over their money (e.g. private keys)
type: string
enum:
- checkgoodcontrolfull
- checkpasscontrolhybrid
- checkpasscontrolmulti
- checkfailcontrolthirdpartyinsured
- checkfailcontrolthirdparty
validation:
description: How much assurance the user has that their bitcoins are real
type: string
enum:
- checkgoodvalidationfullnode
- checkgoodvalidationfullnoderequired
- checkneutralvalidationvariable
- checkpassvalidationspvp2p
- checkpassvalidationspvservers
- checkpassvalidationservers
- checkfailvalidationcentralized
transparency:
description: How much insight the user has into the code they run
type: string
enum:
- checkgoodtransparencydeterministic
- checkpasstransparencyopensource
- checkpasstransparencyopensourcehardware
- checkpasstransparencyopenspechardware
- checkfailtransparencyclosedsource
- checkfailtransparencyremote
- checkfailtransparencynew
environment:
description: How secure is the environment the wallet runs in
type: string
enum:
- checkgoodenvironmenthardware
- checkpassenvironmentmobile
- checkpassenvironmenttwofactor
- checkfailenvironmentdesktop
privacy:
description: How much privacy the wallet gives the user
type: string
enum:
- checkgoodprivacyimproved
- checkpassprivacybasic
- checkneutralprivacyvariable
- checkfailprivacyweak
fees:
description: How does the wallet decide what fee to pay
type: string
enum:
- checkgoodfeecontrolfull
- checkpassfeecontroldynamic
- checkpassfeecontroloverride
- checkneutralfeecontrolvariable
- checkfailfeecontrolstatic
privacycheck: &privacycheck
description: Details about the wallet's privacy settings
type: object
required:
- privacyaddressreuse
- privacydisclosure
- privacynetwork
additionalProperties: false
properties:
privacyaddressreuse:
description: Does the wallet default to address reuse?
type: string
enum:
- checkpassprivacyaddressrotation
- checkfailprivacyaddressrotation
privacydisclosure:
description: To whom, if anyone, does the wallet reveal the addresses it uses?
type: string
enum:
- checkpassprivacydisclosurefullnode
- checkfailprivacydisclosurespv
- checkfailprivacydisclosurecentralized
- checkfailprivacydisclosureaccount
privacynetwork:
description: What network-level privacy options does the wallet support
type: string
enum:
- checkpassprivacynetworksupporttorproxy
- checkfailprivacynetworknosupporttor