--- # 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