From e049819d7e6e234a3eaf3cd23f5537b99c4d4a16 Mon Sep 17 00:00:00 2001 From: gr0kchain Date: Fri, 17 Jun 2022 12:49:13 +0200 Subject: [PATCH] Changed up website structure moving WebBTC as a sub specification --- docs/search/search_index.json | 1 - favicon.ico | Bin 4286 -> 10057 bytes index.html | 18 +++++++++++++++++- js/app.20231a76.js | 2 -- js/app.20231a76.js.map | 1 - {docs => webbtc}/404.html | 0 .../addresses/getAddress/index.html | 0 {docs => webbtc}/assets/enable.png | Bin {docs => webbtc}/assets/makeInvoice.png | Bin {docs => webbtc}/authentication/index.html | 0 {docs => webbtc}/css/custom.css | 0 .../css/fonts/Roboto-Slab-Bold.woff | Bin .../css/fonts/Roboto-Slab-Bold.woff2 | Bin .../css/fonts/Roboto-Slab-Regular.woff | Bin .../css/fonts/Roboto-Slab-Regular.woff2 | Bin .../css/fonts/fontawesome-webfont.eot | Bin .../css/fonts/fontawesome-webfont.svg | 0 .../css/fonts/fontawesome-webfont.ttf | Bin .../css/fonts/fontawesome-webfont.woff | Bin .../css/fonts/fontawesome-webfont.woff2 | Bin .../css/fonts/lato-bold-italic.woff | Bin .../css/fonts/lato-bold-italic.woff2 | Bin {docs => webbtc}/css/fonts/lato-bold.woff | Bin {docs => webbtc}/css/fonts/lato-bold.woff2 | Bin .../css/fonts/lato-normal-italic.woff | Bin .../css/fonts/lato-normal-italic.woff2 | Bin {docs => webbtc}/css/fonts/lato-normal.woff | Bin {docs => webbtc}/css/fonts/lato-normal.woff2 | Bin {docs => webbtc}/css/theme.css | 0 {docs => webbtc}/css/theme_extra.css | 0 {css => webbtc/demo/css}/app.33e3e4f6.css | 0 .../demo/css/app.dec9e1f5.css | 2 +- webbtc/demo/css/app.ece63869.css | 1 + .../demo/css}/chunk-vendors.d4e3e587.css | 0 webbtc/demo/favicon.ico | Bin 0 -> 4286 bytes webbtc/demo/index.html | 1 + webbtc/demo/js/app.03034cc8.js | 2 ++ webbtc/demo/js/app.03034cc8.js.map | 1 + webbtc/demo/js/app.27405eeb.js | 2 ++ webbtc/demo/js/app.27405eeb.js.map | 1 + {js => webbtc/demo/js}/app.3a0da46d.js | 0 {js => webbtc/demo/js}/app.3a0da46d.js.map | 0 .../demo/js}/chunk-vendors.73627de4.js | 0 .../demo/js}/chunk-vendors.73627de4.js.map | 0 {docs => webbtc}/enable/index.html | 0 .../extendability/extending/index.html | 0 {docs => webbtc}/getting_started/index.html | 0 {docs => webbtc}/img/favicon.ico | Bin {docs => webbtc}/index.html | 4 ++-- {docs => webbtc}/info/index.html | 0 .../invoices/makeInvoice/index.html | 0 {docs => webbtc}/js/html5shiv.min.js | 0 {docs => webbtc}/js/jquery-3.6.0.min.js | 0 {docs => webbtc}/js/theme.js | 0 {docs => webbtc}/js/theme_extra.js | 0 {docs => webbtc}/permissions/index.html | 0 {docs => webbtc}/references/index.html | 3 ++- {docs => webbtc}/search.html | 0 {docs => webbtc}/search/lunr.js | 0 {docs => webbtc}/search/main.js | 0 webbtc/search/search_index.json | 1 + {docs => webbtc}/search/worker.js | 0 {docs => webbtc}/services/index.html | 0 {docs => webbtc}/signatures/sign/index.html | 0 {docs => webbtc}/signatures/verify/index.html | 0 {docs => webbtc}/sitemap.xml | 0 {docs => webbtc}/sitemap.xml.gz | Bin 207 -> 207 bytes {docs => webbtc}/squatting/index.html | 0 {docs => webbtc}/transactions/send/index.html | 0 .../transactions/sendTransaction/index.html | 0 70 files changed, 31 insertions(+), 9 deletions(-) delete mode 100644 docs/search/search_index.json delete mode 100644 js/app.20231a76.js delete mode 100644 js/app.20231a76.js.map rename {docs => webbtc}/404.html (100%) rename {docs => webbtc}/addresses/getAddress/index.html (100%) rename {docs => webbtc}/assets/enable.png (100%) rename {docs => webbtc}/assets/makeInvoice.png (100%) rename {docs => webbtc}/authentication/index.html (100%) rename {docs => webbtc}/css/custom.css (100%) rename {docs => webbtc}/css/fonts/Roboto-Slab-Bold.woff (100%) rename {docs => webbtc}/css/fonts/Roboto-Slab-Bold.woff2 (100%) rename {docs => webbtc}/css/fonts/Roboto-Slab-Regular.woff (100%) rename {docs => webbtc}/css/fonts/Roboto-Slab-Regular.woff2 (100%) rename {docs => webbtc}/css/fonts/fontawesome-webfont.eot (100%) rename {docs => webbtc}/css/fonts/fontawesome-webfont.svg (100%) rename {docs => webbtc}/css/fonts/fontawesome-webfont.ttf (100%) rename {docs => webbtc}/css/fonts/fontawesome-webfont.woff (100%) rename {docs => webbtc}/css/fonts/fontawesome-webfont.woff2 (100%) rename {docs => webbtc}/css/fonts/lato-bold-italic.woff (100%) rename {docs => webbtc}/css/fonts/lato-bold-italic.woff2 (100%) rename {docs => webbtc}/css/fonts/lato-bold.woff (100%) rename {docs => webbtc}/css/fonts/lato-bold.woff2 (100%) rename {docs => webbtc}/css/fonts/lato-normal-italic.woff (100%) rename {docs => webbtc}/css/fonts/lato-normal-italic.woff2 (100%) rename {docs => webbtc}/css/fonts/lato-normal.woff (100%) rename {docs => webbtc}/css/fonts/lato-normal.woff2 (100%) rename {docs => webbtc}/css/theme.css (100%) rename {docs => webbtc}/css/theme_extra.css (100%) rename {css => webbtc/demo/css}/app.33e3e4f6.css (100%) rename css/app.4d16f0ed.css => webbtc/demo/css/app.dec9e1f5.css (77%) create mode 100644 webbtc/demo/css/app.ece63869.css rename {css => webbtc/demo/css}/chunk-vendors.d4e3e587.css (100%) create mode 100644 webbtc/demo/favicon.ico create mode 100644 webbtc/demo/index.html create mode 100644 webbtc/demo/js/app.03034cc8.js create mode 100644 webbtc/demo/js/app.03034cc8.js.map create mode 100644 webbtc/demo/js/app.27405eeb.js create mode 100644 webbtc/demo/js/app.27405eeb.js.map rename {js => webbtc/demo/js}/app.3a0da46d.js (100%) rename {js => webbtc/demo/js}/app.3a0da46d.js.map (100%) rename {js => webbtc/demo/js}/chunk-vendors.73627de4.js (100%) rename {js => webbtc/demo/js}/chunk-vendors.73627de4.js.map (100%) rename {docs => webbtc}/enable/index.html (100%) rename {docs => webbtc}/extendability/extending/index.html (100%) rename {docs => webbtc}/getting_started/index.html (100%) rename {docs => webbtc}/img/favicon.ico (100%) rename {docs => webbtc}/index.html (96%) rename {docs => webbtc}/info/index.html (100%) rename {docs => webbtc}/invoices/makeInvoice/index.html (100%) rename {docs => webbtc}/js/html5shiv.min.js (100%) rename {docs => webbtc}/js/jquery-3.6.0.min.js (100%) rename {docs => webbtc}/js/theme.js (100%) rename {docs => webbtc}/js/theme_extra.js (100%) rename {docs => webbtc}/permissions/index.html (100%) rename {docs => webbtc}/references/index.html (98%) rename {docs => webbtc}/search.html (100%) rename {docs => webbtc}/search/lunr.js (100%) rename {docs => webbtc}/search/main.js (100%) create mode 100644 webbtc/search/search_index.json rename {docs => webbtc}/search/worker.js (100%) rename {docs => webbtc}/services/index.html (100%) rename {docs => webbtc}/signatures/sign/index.html (100%) rename {docs => webbtc}/signatures/verify/index.html (100%) rename {docs => webbtc}/sitemap.xml (100%) rename {docs => webbtc}/sitemap.xml.gz (69%) rename {docs => webbtc}/squatting/index.html (100%) rename {docs => webbtc}/transactions/send/index.html (100%) rename {docs => webbtc}/transactions/sendTransaction/index.html (100%) diff --git a/docs/search/search_index.json b/docs/search/search_index.json deleted file mode 100644 index 7e2704f..0000000 --- a/docs/search/search_index.json +++ /dev/null @@ -1 +0,0 @@ -{"config":{"indexing":"full","lang":["en"],"min_search_length":3,"prebuild_index":false,"separator":"[\\s\\-]+"},"docs":[{"location":"","text":"WebBTC A common convention in the Bitcoin web application ecosystem is for key management software (\u201cwallets\u201d) to expose their API via a JavaScript object in the web page. This object is called the common web wallet interface. Historically, Provider implementations have exhibited conflicting interfaces and behaviors between wallets. This working group formalizes an Bitcoin extension API to promote wallet interoperability. The API is designed to be minimal, event-driven, and agnostic of transport and RPC protocols. Its functionality is easily extended by defining new RPC methods and message event types. Historically, providers have been made available as window.bitcoin or window.webln in web browsers, but this convention is not part of the specification. A list of current work in progress can be tracked from the issues tab in the playground repository , which includes a functional spec demonstration. A hosted instance of the demo can be found here together with the accompanying specification documentation .","title":"Overview"},{"location":"#webbtc","text":"A common convention in the Bitcoin web application ecosystem is for key management software (\u201cwallets\u201d) to expose their API via a JavaScript object in the web page. This object is called the common web wallet interface. Historically, Provider implementations have exhibited conflicting interfaces and behaviors between wallets. This working group formalizes an Bitcoin extension API to promote wallet interoperability. The API is designed to be minimal, event-driven, and agnostic of transport and RPC protocols. Its functionality is easily extended by defining new RPC methods and message event types. Historically, providers have been made available as window.bitcoin or window.webln in web browsers, but this convention is not part of the specification. A list of current work in progress can be tracked from the issues tab in the playground repository , which includes a functional spec demonstration. A hosted instance of the demo can be found here together with the accompanying specification documentation .","title":"WebBTC"},{"location":"authentication/","text":"","title":"Authentication"},{"location":"enable/","text":"Enable Wallet The enable method is called to allow access to further API methods from the wallet. Syntax enable() Parameters None Returns Object enabled : Boolean Required addresses : AddressObjArray Optional address: String derivationPath: String publicKey: String NOTE: The AddressObjArray here can be returned for Onchain wallets but can also be used ny WebLN wallets which also expose the onchain wallet functions. This typically is used to show that a wallet is connected to the page. Example // Enable wallet window.webbtc.enable() { address: { address: \"bc1q9zw3q496dcx2qu5pvhvg0zwfsxgj79nhh5rqct\" derivationPath: \"84'/0'/0'/0/0\" publicKey: \"031ecb71f390fcffc8727bedc5fb563e7bf90cd9725b1519e1ef74a16ca7a30fe3\" }, success: true } // Check if the wallet is enabled window.webbtc.enabled true // Check if wallet is enabled, invoke enable when false if (!window.webbtc.enabled) window.webbtc.enable() Notes Application specific on wether or not to trust once or always. On invoking the enable call the application developer provides an interface which may or may not prompt the user to accept the request.","title":"Enabling"},{"location":"enable/#enable-wallet","text":"The enable method is called to allow access to further API methods from the wallet.","title":"Enable Wallet"},{"location":"enable/#syntax","text":"enable()","title":"Syntax"},{"location":"enable/#parameters","text":"None","title":"Parameters"},{"location":"enable/#returns","text":"Object enabled : Boolean Required addresses : AddressObjArray Optional address: String derivationPath: String publicKey: String NOTE: The AddressObjArray here can be returned for Onchain wallets but can also be used ny WebLN wallets which also expose the onchain wallet functions. This typically is used to show that a wallet is connected to the page.","title":"Returns"},{"location":"enable/#example","text":"// Enable wallet window.webbtc.enable() { address: { address: \"bc1q9zw3q496dcx2qu5pvhvg0zwfsxgj79nhh5rqct\" derivationPath: \"84'/0'/0'/0/0\" publicKey: \"031ecb71f390fcffc8727bedc5fb563e7bf90cd9725b1519e1ef74a16ca7a30fe3\" }, success: true } // Check if the wallet is enabled window.webbtc.enabled true // Check if wallet is enabled, invoke enable when false if (!window.webbtc.enabled) window.webbtc.enable()","title":"Example"},{"location":"enable/#notes","text":"Application specific on wether or not to trust once or always. On invoking the enable call the application developer provides an interface which may or may not prompt the user to accept the request.","title":"Notes"},{"location":"getting_started/","text":"Getting Started","title":"Getting Started"},{"location":"getting_started/#getting-started","text":"","title":"Getting Started"},{"location":"info/","text":"Get wallet information The getInfo method is called to obtain supported features and capabilities of the wallet. Syntax getInfo() Parameters None Returns Object version : Number | String Required methods : Array Optional supports : Array Optional Example window.webbtc.getInfo() { \"version\" : 1, \"supports\" : [ \"bip39\", \"bip32\" ], \"methods\": [ // schema for available methods \"enable\", \"getInfo\", \"getAddress\", \"signMessage\", \"verifyMessage\", \"makeInvoice\", \"sendPayment\" ] } Additional notes The above method might be extended to include helper methods which include. window.webbtc.getMethods() window.webbtc.getVersion() window.webbtc.getServices() NOTE: Method for obtaining existing supported permissions that the user could approve when enabling the wallet. Application specific implementation details can vary based on the security preference. Concerns and security observations Possible finger printing of users if this method is accessible without enabling it first.","title":"info"},{"location":"info/#get-wallet-information","text":"The getInfo method is called to obtain supported features and capabilities of the wallet.","title":"Get wallet information"},{"location":"info/#syntax","text":"getInfo()","title":"Syntax"},{"location":"info/#parameters","text":"None","title":"Parameters"},{"location":"info/#returns","text":"Object version : Number | String Required methods : Array Optional supports : Array Optional","title":"Returns"},{"location":"info/#example","text":"window.webbtc.getInfo() { \"version\" : 1, \"supports\" : [ \"bip39\", \"bip32\" ], \"methods\": [ // schema for available methods \"enable\", \"getInfo\", \"getAddress\", \"signMessage\", \"verifyMessage\", \"makeInvoice\", \"sendPayment\" ] }","title":"Example"},{"location":"info/#additional-notes","text":"The above method might be extended to include helper methods which include. window.webbtc.getMethods() window.webbtc.getVersion() window.webbtc.getServices() NOTE: Method for obtaining existing supported permissions that the user could approve when enabling the wallet. Application specific implementation details can vary based on the security preference.","title":"Additional notes"},{"location":"info/#concerns-and-security-observations","text":"Possible finger printing of users if this method is accessible without enabling it first.","title":"Concerns and security observations"},{"location":"permissions/","text":"","title":"Permissions"},{"location":"references/","text":"References Spec Demo Onchain Wallet Documentation A WebLN playground WebLN Documentation WebLN Guide","title":"Resources"},{"location":"references/#references","text":"Spec Demo Onchain Wallet Documentation A WebLN playground WebLN Documentation WebLN Guide","title":"References"},{"location":"services/","text":"Services","title":"Services"},{"location":"services/#services","text":"","title":"Services"},{"location":"squatting/","text":"Extension namespace squatting Historically, providers have been made available as window.bitcoin or window.webln in web browsers, but this convention is not part of the specification.","title":"Namespace Squatting"},{"location":"squatting/#extension-namespace-squatting","text":"Historically, providers have been made available as window.bitcoin or window.webln in web browsers, but this convention is not part of the specification.","title":"Extension namespace squatting"},{"location":"addresses/getAddress/","text":"Get addresses from wallet The getAddresses method is called to obtain an onchain address from the wallet. NOTE: WebLN implementations might choose to implement this method when exposing access to the onchain wallet. Syntax getAddresses(index?, num?, change?) Parameters index: Number (default 0) - Which index to start from Optional num: Number (default 1) - Number of addresses to retrieve Optional change: Boolean (default false) - true for change addresses, false for external Optional Returns AddressObjectArray - An array of bitcoin address objects Required address: String - Bitcoin address Required derivationPath: String - Derivation path of the address e.g. \"84'/1'/0'/0/0\" Optional publicKey: String(Hex) - The public key for the derivation path Optional index: Number - Index of the address Optional Example await window.webbtc.getAddresses(0, 10, false) [{ address: \"tb1qqwn2dp8mundc6mf3xt4c8puqakk0vrcgzdayq2\", derivationPath: \"84'/1'/0'/0/0\", publicKey: { \u2026}, index: 0 } { address: \"tb1qca6k2ke5jdrwmdqcku4eex4k9hzzzhzshhsgpn\", derivationPath: \"84'/1'/0'/0/1\", publicKey: { \u2026}, index: 1 } { address: \"tb1q6e36gyc8vhv97k9m2uldndsl8xg80yd49mhqpx\", derivationPath: \"84'/1'/0'/0/2\", publicKey: { \u2026}, index: 2 } { address: \"tb1qvphc32p0qxl2fm89r04epmtxvdt7l7dl5a955c\", derivationPath: \"84'/1'/0'/0/3\", publicKey: { \u2026}, index: 3 } { address: \"tb1qxm90ahvjnut9d7mw8d0r22czldnu3kqyef55nn\", derivationPath: \"84'/1'/0'/0/4\", publicKey: { \u2026}, index: 4 } { address: \"tb1q8wjjk4gu3am2tjg833qulqt69ny8e24vt8ccj6\", derivationPath: \"84'/1'/0'/0/5\", publicKey: { \u2026}, index: 5 } { address: \"tb1q7jkkn80maps9z068u22jrpv65t9epjlrl4zpzj\", derivationPath: \"84'/1'/0'/0/6\", publicKey: { \u2026}, index: 6 } { address: \"tb1qrzpw5rrm9w8qf3v3y43av3npeqhgp9lng5xtyk\", derivationPath: \"84'/1'/0'/0/7\", publicKey: { \u2026}, index: 7 } { address: \"tb1q9vu3j2m6u48sv53g7e24lfx2c9mavv0ee6wr02\", derivationPath: \"84'/1'/0'/0/8\", publicKey: { \u2026}, index: 8 } { address: \"tb1q0m2f0vjc4njy5d0vzmlwre8jdtar9x9w7nz9jg\", derivationPath: \"84'/1'/0'/0/9\", publicKey: { \u2026}, index: 9 }] Notes Implemented for on-chain, might however not be supported by off-chain wallets","title":"getAddress"},{"location":"addresses/getAddress/#get-addresses-from-wallet","text":"The getAddresses method is called to obtain an onchain address from the wallet. NOTE: WebLN implementations might choose to implement this method when exposing access to the onchain wallet.","title":"Get addresses from wallet"},{"location":"addresses/getAddress/#syntax","text":"getAddresses(index?, num?, change?)","title":"Syntax"},{"location":"addresses/getAddress/#parameters","text":"index: Number (default 0) - Which index to start from Optional num: Number (default 1) - Number of addresses to retrieve Optional change: Boolean (default false) - true for change addresses, false for external Optional","title":"Parameters"},{"location":"addresses/getAddress/#returns","text":"AddressObjectArray - An array of bitcoin address objects Required address: String - Bitcoin address Required derivationPath: String - Derivation path of the address e.g. \"84'/1'/0'/0/0\" Optional publicKey: String(Hex) - The public key for the derivation path Optional index: Number - Index of the address Optional","title":"Returns"},{"location":"addresses/getAddress/#example","text":"await window.webbtc.getAddresses(0, 10, false) [{ address: \"tb1qqwn2dp8mundc6mf3xt4c8puqakk0vrcgzdayq2\", derivationPath: \"84'/1'/0'/0/0\", publicKey: { \u2026}, index: 0 } { address: \"tb1qca6k2ke5jdrwmdqcku4eex4k9hzzzhzshhsgpn\", derivationPath: \"84'/1'/0'/0/1\", publicKey: { \u2026}, index: 1 } { address: \"tb1q6e36gyc8vhv97k9m2uldndsl8xg80yd49mhqpx\", derivationPath: \"84'/1'/0'/0/2\", publicKey: { \u2026}, index: 2 } { address: \"tb1qvphc32p0qxl2fm89r04epmtxvdt7l7dl5a955c\", derivationPath: \"84'/1'/0'/0/3\", publicKey: { \u2026}, index: 3 } { address: \"tb1qxm90ahvjnut9d7mw8d0r22czldnu3kqyef55nn\", derivationPath: \"84'/1'/0'/0/4\", publicKey: { \u2026}, index: 4 } { address: \"tb1q8wjjk4gu3am2tjg833qulqt69ny8e24vt8ccj6\", derivationPath: \"84'/1'/0'/0/5\", publicKey: { \u2026}, index: 5 } { address: \"tb1q7jkkn80maps9z068u22jrpv65t9epjlrl4zpzj\", derivationPath: \"84'/1'/0'/0/6\", publicKey: { \u2026}, index: 6 } { address: \"tb1qrzpw5rrm9w8qf3v3y43av3npeqhgp9lng5xtyk\", derivationPath: \"84'/1'/0'/0/7\", publicKey: { \u2026}, index: 7 } { address: \"tb1q9vu3j2m6u48sv53g7e24lfx2c9mavv0ee6wr02\", derivationPath: \"84'/1'/0'/0/8\", publicKey: { \u2026}, index: 8 } { address: \"tb1q0m2f0vjc4njy5d0vzmlwre8jdtar9x9w7nz9jg\", derivationPath: \"84'/1'/0'/0/9\", publicKey: { \u2026}, index: 9 }]","title":"Example"},{"location":"addresses/getAddress/#notes","text":"Implemented for on-chain, might however not be supported by off-chain wallets","title":"Notes"},{"location":"extendability/extending/","text":"Extendability There is room for extending this API through a request method. This method might also be useful as a base from which all the other methods in the specification might have wrapper methods. Syntax window.webbtc.request(method, params) Parameters method: String Required params: Array Required Returns Promise | Object NOTE: This call might be asynchronous is would return a promise based on wether or not the payment has been broadcast Onchain and or processed successfully Example // Example of calling an existing method window.webbtc.request('getInfo',[]) { \"version\" : 1, \"supports\" : [ \"bip39\", \"bip32\" ], \"methods\": [ // schema for available methods \"enable\", \"getInfo\", \"getAddress\", \"signMessage\", \"verifyMessage\", \"makeInvoice\", \"sendPayment\" ] } // Example for calling an arbitrary message not covered in the specification // Custom method might be // hello(name) { // return \"Hello ${name}\" //} > await window.webbtc.request('hello',['Alice']) Hello Alice","title":"Extending"},{"location":"extendability/extending/#extendability","text":"There is room for extending this API through a request method. This method might also be useful as a base from which all the other methods in the specification might have wrapper methods.","title":"Extendability"},{"location":"extendability/extending/#syntax","text":"window.webbtc.request(method, params)","title":"Syntax"},{"location":"extendability/extending/#parameters","text":"method: String Required params: Array Required","title":"Parameters"},{"location":"extendability/extending/#returns","text":"Promise | Object NOTE: This call might be asynchronous is would return a promise based on wether or not the payment has been broadcast Onchain and or processed successfully","title":"Returns"},{"location":"extendability/extending/#example","text":"// Example of calling an existing method window.webbtc.request('getInfo',[]) { \"version\" : 1, \"supports\" : [ \"bip39\", \"bip32\" ], \"methods\": [ // schema for available methods \"enable\", \"getInfo\", \"getAddress\", \"signMessage\", \"verifyMessage\", \"makeInvoice\", \"sendPayment\" ] } // Example for calling an arbitrary message not covered in the specification // Custom method might be // hello(name) { // return \"Hello ${name}\" //} > await window.webbtc.request('hello',['Alice']) Hello Alice","title":"Example"},{"location":"invoices/makeInvoice/","text":"Create a new invoice The makeInvoice method is used to generate a new invoice. Syntax makeInvoice(Object) Parameters Object amount : string | number Optional defaultMemo : string Optional label : string Optional message : string Optional NOTE: Providing any of the above would result in a pre-populating a a prompt which requires the user to complete the rest of the information. e.g. Only providing the amount parameter might result in the following prompt. Returns Object paymentRequest: string; LN Invoice BIP21 address string; Onchain BIP 21 URI Example await window.webln.makeInvoice({}) { paymentRequest: 'lnbc10n1p3x9thxpp59xj4cmm26jnpnrfekgncyj42e9lxredz\u2026734s07kxt8hl2s6wuv20kh7kw7h5lurtmyscsrwgkgptn4z2j', rHash: '29a55c6f6ad4a6198d39b227824aaac97e61e5a2428db7dab7f8b097ae5d28ca' } window.bitcoin.makeInvoice({amount:1, label: 'Label', message: 'Message'}) bitcoin:address?amount=0&label=Label&message=Message Considerations These parameters might not be required in the spec as they are used by the website for convenience purposes in setting up the invoice dialog. defaultAmount?: string | number; minimumAmount?: string | number; maximumAmount?: string | number; Notes The amount parameter doesn't distinguish between bitcoin and satoshis Reference https://github.com/bitcoin/bips/blob/master/bip-0021.mediawiki bitcoinurn = \"bitcoin:\" bitcoinaddress [ \"?\" bitcoinparams ] bitcoinaddress = *base58 bitcoinparams = bitcoinparam [ \"&\" bitcoinparams ] bitcoinparam = [ amountparam / labelparam / messageparam / otherparam / reqparam ] amountparam = \"amount=\" *digit [ \".\" *digit ] labelparam = \"label=\" *qchar messageparam = \"message=\" *qchar otherparam = qchar *qchar [ \"=\" *qchar ] reqparam = \"req-\" qchar *qchar [ \"=\" *qchar ] Invoice address description Invoice Address Meno proposal Payment Requests Separate Meno into name and description Label = The who Message = The what","title":"makeInvoice"},{"location":"invoices/makeInvoice/#create-a-new-invoice","text":"The makeInvoice method is used to generate a new invoice.","title":"Create a new invoice"},{"location":"invoices/makeInvoice/#syntax","text":"makeInvoice(Object)","title":"Syntax"},{"location":"invoices/makeInvoice/#parameters","text":"Object amount : string | number Optional defaultMemo : string Optional label : string Optional message : string Optional NOTE: Providing any of the above would result in a pre-populating a a prompt which requires the user to complete the rest of the information. e.g. Only providing the amount parameter might result in the following prompt.","title":"Parameters"},{"location":"invoices/makeInvoice/#returns","text":"Object paymentRequest: string; LN Invoice BIP21 address string; Onchain BIP 21 URI","title":"Returns"},{"location":"invoices/makeInvoice/#example","text":"await window.webln.makeInvoice({}) { paymentRequest: 'lnbc10n1p3x9thxpp59xj4cmm26jnpnrfekgncyj42e9lxredz\u2026734s07kxt8hl2s6wuv20kh7kw7h5lurtmyscsrwgkgptn4z2j', rHash: '29a55c6f6ad4a6198d39b227824aaac97e61e5a2428db7dab7f8b097ae5d28ca' } window.bitcoin.makeInvoice({amount:1, label: 'Label', message: 'Message'}) bitcoin:address?amount=0&label=Label&message=Message","title":"Example"},{"location":"invoices/makeInvoice/#considerations","text":"These parameters might not be required in the spec as they are used by the website for convenience purposes in setting up the invoice dialog. defaultAmount?: string | number; minimumAmount?: string | number; maximumAmount?: string | number;","title":"Considerations"},{"location":"invoices/makeInvoice/#notes","text":"The amount parameter doesn't distinguish between bitcoin and satoshis","title":"Notes"},{"location":"invoices/makeInvoice/#reference","text":"https://github.com/bitcoin/bips/blob/master/bip-0021.mediawiki bitcoinurn = \"bitcoin:\" bitcoinaddress [ \"?\" bitcoinparams ] bitcoinaddress = *base58 bitcoinparams = bitcoinparam [ \"&\" bitcoinparams ] bitcoinparam = [ amountparam / labelparam / messageparam / otherparam / reqparam ] amountparam = \"amount=\" *digit [ \".\" *digit ] labelparam = \"label=\" *qchar messageparam = \"message=\" *qchar otherparam = qchar *qchar [ \"=\" *qchar ] reqparam = \"req-\" qchar *qchar [ \"=\" *qchar ]","title":"Reference"},{"location":"invoices/makeInvoice/#invoice-address-description","text":"Invoice Address Meno proposal Payment Requests Separate Meno into name and description Label = The who Message = The what","title":"Invoice address description"},{"location":"signatures/sign/","text":"Sign Message The signMessage method is used to sign arbitrary data and produce a signature which can be used to verify ownership of a key. Syntax signMessage(message, address?) Parameters Object message: String - The message to sign Required address: Object Option NOTE: The second parameter here is typically required for onchain wallets but can be omitted if the wallet contains internal support for automatic key selection. In the event of LND or C-Lightning, the wallet may use a root key whereas onchain wallets require to provide the address derived from the key required for signing the message. Returns Signature: String Required Example > await window.wallet.signMessage('Better with code than with words', 'tb1qqwn2dp8mundc6mf3xt4c8puqakk0vrcgzdayq2') \"2047ab7b010687146ef9d69648cbdc4610b7ebaf6f21d7255f2113fe87b24d4b4264eef980d21f29d3ba81b369e41bf532b1292021af16c6773187c34d090b7efb\" References WebLN examples https://api.lightning.community/#chainrpc-spendrequest BIPS https://github.com/bitcoin/bips/blob/master/bip-0137.mediawiki https://github.com/bitcoin/bips/blob/master/bip-0322.mediawiki C-lightning https://lightning.readthedocs.io/lightning-signmessage.7.html","title":"Signing"},{"location":"signatures/sign/#sign-message","text":"The signMessage method is used to sign arbitrary data and produce a signature which can be used to verify ownership of a key.","title":"Sign Message"},{"location":"signatures/sign/#syntax","text":"signMessage(message, address?)","title":"Syntax"},{"location":"signatures/sign/#parameters","text":"Object message: String - The message to sign Required address: Object Option NOTE: The second parameter here is typically required for onchain wallets but can be omitted if the wallet contains internal support for automatic key selection. In the event of LND or C-Lightning, the wallet may use a root key whereas onchain wallets require to provide the address derived from the key required for signing the message.","title":"Parameters"},{"location":"signatures/sign/#returns","text":"Signature: String Required","title":"Returns"},{"location":"signatures/sign/#example","text":"> await window.wallet.signMessage('Better with code than with words', 'tb1qqwn2dp8mundc6mf3xt4c8puqakk0vrcgzdayq2') \"2047ab7b010687146ef9d69648cbdc4610b7ebaf6f21d7255f2113fe87b24d4b4264eef980d21f29d3ba81b369e41bf532b1292021af16c6773187c34d090b7efb\"","title":"Example"},{"location":"signatures/sign/#references","text":"","title":"References"},{"location":"signatures/sign/#webln-examples","text":"https://api.lightning.community/#chainrpc-spendrequest","title":"WebLN examples"},{"location":"signatures/sign/#bips","text":"https://github.com/bitcoin/bips/blob/master/bip-0137.mediawiki https://github.com/bitcoin/bips/blob/master/bip-0322.mediawiki","title":"BIPS"},{"location":"signatures/sign/#c-lightning","text":"https://lightning.readthedocs.io/lightning-signmessage.7.html","title":"C-lightning"},{"location":"signatures/verify/","text":"Verify Message Signature The verifyMessage method is used to verify the signature of a arbitrary message. Syntax verifyMessage(signature, address?) Parameters Object signature: String (Hex) - The message to sign address: String - The used to sign the message NOTE: The second parameter here is typically required for onchain wallets but can be omitted if the wallet contains internal support for automatic key selection. In the event of LND or C-Lightning, the wallet may use a root key whereas onchain wallets require to provide the address derived from the key required for signing the message. Returns Boolean - Is valid signature Example > await window.webbtc.verifyMessage('2047ab7b010687146ef9d69648cbdc4610b7ebaf6f21d7255f2113fe87b24d4b4264eef980d21f29d3ba81b369e41bf532b1292021af16c6773187c34d090b7efb', 'tb1qqwn2dp8mundc6mf3xt4c8puqakk0vrcgzdayq2') true References VerifyMessage LND lightning-checkmessage C-lightning Bitcoin Core Signatures of Messages using Private Keys- BIP137 Generic Signed Message Format BIP322","title":"Verification"},{"location":"signatures/verify/#verify-message-signature","text":"The verifyMessage method is used to verify the signature of a arbitrary message.","title":"Verify Message Signature"},{"location":"signatures/verify/#syntax","text":"verifyMessage(signature, address?)","title":"Syntax"},{"location":"signatures/verify/#parameters","text":"Object signature: String (Hex) - The message to sign address: String - The used to sign the message NOTE: The second parameter here is typically required for onchain wallets but can be omitted if the wallet contains internal support for automatic key selection. In the event of LND or C-Lightning, the wallet may use a root key whereas onchain wallets require to provide the address derived from the key required for signing the message.","title":"Parameters"},{"location":"signatures/verify/#returns","text":"Boolean - Is valid signature","title":"Returns"},{"location":"signatures/verify/#example","text":"> await window.webbtc.verifyMessage('2047ab7b010687146ef9d69648cbdc4610b7ebaf6f21d7255f2113fe87b24d4b4264eef980d21f29d3ba81b369e41bf532b1292021af16c6773187c34d090b7efb', 'tb1qqwn2dp8mundc6mf3xt4c8puqakk0vrcgzdayq2') true","title":"Example"},{"location":"signatures/verify/#references","text":"VerifyMessage LND lightning-checkmessage C-lightning Bitcoin Core Signatures of Messages using Private Keys- BIP137 Generic Signed Message Format BIP322","title":"References"},{"location":"transactions/send/","text":"Send Payment The sendPayment method is called to pay an lightning invoice or BIP21 URI. Syntax sendPayment(String) Parameters bip21 url : string or paymentRequest: string Required Returns Promise NOTE: This call is asynchronous is would return a promise based on wether or not the payment has been broadcast Onchain and or processed successfully WebLN . Example // Example for processing a BIP21 URI Invoice > await window.webbtc.sendPayment('bitcoin:n1nk1j5DKmmWWuV2TvzhUb3AYBtnqAK1u1?amount=1') { \"txid\":\"ba8d75e01ab32932d9ac899418a6bec95f2869e1b1c161b871f661c5a8789a0e\" } // Example for processing a LN payment window.webbtc.sendPayment('lnbc10n1p3x9thxpp59xj4cmm26jnpnrfekgncyj42e9lxredz\u2026734s07kxt8hl2s6wuv20kh7kw7h5lurtmyscsrwgkgptn4z2j') { \"preimage\": \"6665333431626331363632653134386630643435626532626165383332323333\", \"paymentHash\": \"d221b791c7ef1996b25424ff7cfb4ddf8d4444076666ce6c4ba0f6a24d99117e\" } Notes The purpose of this method includes both signing as well as broadcasting the transaction. The implementation details of this could be done as separate concerns. There are more complex versions for onchain including PSBT, pay multiple addresses at the same time.","title":"sendPayment"},{"location":"transactions/send/#send-payment","text":"The sendPayment method is called to pay an lightning invoice or BIP21 URI.","title":"Send Payment"},{"location":"transactions/send/#syntax","text":"sendPayment(String)","title":"Syntax"},{"location":"transactions/send/#parameters","text":"bip21 url : string or paymentRequest: string Required","title":"Parameters"},{"location":"transactions/send/#returns","text":"Promise NOTE: This call is asynchronous is would return a promise based on wether or not the payment has been broadcast Onchain and or processed successfully WebLN .","title":"Returns"},{"location":"transactions/send/#example","text":"// Example for processing a BIP21 URI Invoice > await window.webbtc.sendPayment('bitcoin:n1nk1j5DKmmWWuV2TvzhUb3AYBtnqAK1u1?amount=1') { \"txid\":\"ba8d75e01ab32932d9ac899418a6bec95f2869e1b1c161b871f661c5a8789a0e\" } // Example for processing a LN payment window.webbtc.sendPayment('lnbc10n1p3x9thxpp59xj4cmm26jnpnrfekgncyj42e9lxredz\u2026734s07kxt8hl2s6wuv20kh7kw7h5lurtmyscsrwgkgptn4z2j') { \"preimage\": \"6665333431626331363632653134386630643435626532626165383332323333\", \"paymentHash\": \"d221b791c7ef1996b25424ff7cfb4ddf8d4444076666ce6c4ba0f6a24d99117e\" }","title":"Example"},{"location":"transactions/send/#notes","text":"The purpose of this method includes both signing as well as broadcasting the transaction. The implementation details of this could be done as separate concerns. There are more complex versions for onchain including PSBT, pay multiple addresses at the same time.","title":"Notes"},{"location":"transactions/sendTransaction/","text":"Send transaction The sendTransaction method is called to make an onchain payment. Syntax sendTransaction(String) Parameters address: String Required amount: String Required Returns txid: String Example window.bitcoin.sendTransaction('tb1qqwn2dp8mundc6mf3xt4c8puqakk0vrcgzdayq2', 10000) \"ba8d75e01ab32932d9ac899418a6bec95f2869e1b1c161b871f661c5a8789a0e\" } Notes The purpose of this method includes both signing as well as broadcasting the transaction. The implementation details of this could be done as separate concerns. There are more complex versions for onchain including PSBT, pay multiple addresses at the same time.","title":"sendTransaction"},{"location":"transactions/sendTransaction/#send-transaction","text":"The sendTransaction method is called to make an onchain payment.","title":"Send transaction"},{"location":"transactions/sendTransaction/#syntax","text":"sendTransaction(String)","title":"Syntax"},{"location":"transactions/sendTransaction/#parameters","text":"address: String Required amount: String Required","title":"Parameters"},{"location":"transactions/sendTransaction/#returns","text":"txid: String","title":"Returns"},{"location":"transactions/sendTransaction/#example","text":"window.bitcoin.sendTransaction('tb1qqwn2dp8mundc6mf3xt4c8puqakk0vrcgzdayq2', 10000) \"ba8d75e01ab32932d9ac899418a6bec95f2869e1b1c161b871f661c5a8789a0e\" }","title":"Example"},{"location":"transactions/sendTransaction/#notes","text":"The purpose of this method includes both signing as well as broadcasting the transaction. The implementation details of this could be done as separate concerns. There are more complex versions for onchain including PSBT, pay multiple addresses at the same time.","title":"Notes"}]} \ No newline at end of file diff --git a/favicon.ico b/favicon.ico index df36fcfb72584e00488330b560ebcf34a41c64c2..f24925d70436040dee23b46d8beb645389d66384 100644 GIT binary patch literal 10057 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 literal 4286 zcmds*O-Phc6o&64GDVCEQHxsW(p4>LW*W<827=Unuo8sGpRux(DN@jWP-e29Wl%wj zY84_aq9}^Am9-cWTD5GGEo#+5Fi2wX_P*bo+xO!)p*7B;iKlbFd(U~_d(U?#hLj56 zPhFkj-|A6~Qk#@g^#D^U0XT1cu=c-vu1+SElX9NR;kzAUV(q0|dl0|%h|dI$%VICy zJnu2^L*Te9JrJMGh%-P79CL0}dq92RGU6gI{v2~|)p}sG5x0U*z<8U;Ij*hB9z?ei z@g6Xq-pDoPl=MANPiR7%172VA%r)kevtV-_5H*QJKFmd;8yA$98zCxBZYXTNZ#QFk2(TX0;Y2dt&WitL#$96|gJY=3xX zpCoi|YNzgO3R`f@IiEeSmKrPSf#h#Qd<$%Ej^RIeeYfsxhPMOG`S`Pz8q``=511zm zAm)MX5AV^5xIWPyEu7u>qYs?pn$I4nL9J!=K=SGlKLXpE<5x+2cDTXq?brj?n6sp= zphe9;_JHf40^9~}9i08r{XM$7HB!`{Ys~TK0kx<}ZQng`UPvH*11|q7&l9?@FQz;8 zx!=3<4seY*%=OlbCbcae?5^V_}*K>Uo6ZWV8mTyE^B=DKy7-sdLYkR5Z?paTgK-zyIkKjIcpyO z{+uIt&YSa_$QnN_@t~L014dyK(fOOo+W*MIxbA6Ndgr=Y!f#Tokqv}n<7-9qfHkc3 z=>a|HWqcX8fzQCT=dqVbogRq!-S>H%yA{1w#2Pn;=e>JiEj7Hl;zdt-2f+j2%DeVD zsW0Ab)ZK@0cIW%W7z}H{&~yGhn~D;aiP4=;m-HCo`BEI+Kd6 z={Xwx{TKxD#iCLfl2vQGDitKtN>z|-AdCN|$jTFDg0m3O`WLD4_s#$S diff --git a/index.html b/index.html index c314009..4c6fd47 100644 --- a/index.html +++ b/index.html @@ -1 +1,17 @@ -specwrapper
\ No newline at end of file + + + + Bitcoin And Lightning Layer Specifications + + + +

Bitcoin And Lightning Layer Specifications

+
+
WebBTC
+
+

A common convention in the Bitcoin web application ecosystem is for key management software (“wallets”) to expose their API via a JavaScript object in the web page. This object is called the common web wallet interface.

+

Read more

+
+
+ + diff --git a/js/app.20231a76.js b/js/app.20231a76.js deleted file mode 100644 index 3e7fcd4..0000000 --- a/js/app.20231a76.js +++ /dev/null @@ -1,2 +0,0 @@ -(function(e){function n(n){for(var t,o,i=n[0],c=n[1],d=n[2],p=0,u=[];p\n \n \n\n \n

\n Action\n

\n\n \n\n \n

\n Bitcoin\n

\n\n \n\n \n

\n WebLN\n

\n\n \n\n \n

\n Proposed\n

\n\n \n
\n \n \n

{{item.name}}

\n

{{item.description}}

\n

Docs

\n \n\n \n

{{item.name}}

\n Request: {{item.bitcoin.signature}}\n
\n Response:\n
{{item.bitcoin.response}}
\n
\n\n \n\n \n

{{item.name}}

\n\n
\n Request: {{item.webln.signature}}\n
\n Response:\n
{{item.webln.response}}
\n
\n
\n \n\n \n

{{item.name}}

\n Request: {{item.wrapper.signature}}\n
\n
{{item.wrapper.response}}
\n
\n \n
\n
\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Index.vue?vue&type=template&id=79b867c0&scoped=true&\"\nimport script from \"./Index.vue?vue&type=script&lang=js&\"\nexport * from \"./Index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Index.vue?vue&type=style&index=0&id=79b867c0&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"79b867c0\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VRow } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBtn,VCol,VContainer,VRow})\n","\n\n\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--13-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--13-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=4fa97e81&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VApp } from 'vuetify/lib/components/VApp';\nimport { VAppBar } from 'vuetify/lib/components/VAppBar';\nimport { VMain } from 'vuetify/lib/components/VMain';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VApp,VAppBar,VMain,VSpacer})\n","import Vue from 'vue';\nimport Vuetify from 'vuetify/lib/framework';\n\nVue.use(Vuetify);\n\nexport default new Vuetify({\n});\n","import Vue from 'vue'\nimport App from './App.vue'\nimport vuetify from './plugins/vuetify'\n\nVue.config.productionTip = false\n\nnew Vue({\n vuetify,\n render: h => h(App)\n}).$mount('#app')\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Index.vue?vue&type=style&index=0&id=79b867c0&scoped=true&lang=css&\""],"sourceRoot":""} \ No newline at end of file diff --git a/docs/404.html b/webbtc/404.html similarity index 100% rename from docs/404.html rename to webbtc/404.html diff --git a/docs/addresses/getAddress/index.html b/webbtc/addresses/getAddress/index.html similarity index 100% rename from docs/addresses/getAddress/index.html rename to webbtc/addresses/getAddress/index.html diff --git a/docs/assets/enable.png b/webbtc/assets/enable.png similarity index 100% rename from docs/assets/enable.png rename to webbtc/assets/enable.png diff --git a/docs/assets/makeInvoice.png b/webbtc/assets/makeInvoice.png similarity index 100% rename from docs/assets/makeInvoice.png rename to webbtc/assets/makeInvoice.png diff --git a/docs/authentication/index.html b/webbtc/authentication/index.html similarity index 100% rename from docs/authentication/index.html rename to webbtc/authentication/index.html diff --git a/docs/css/custom.css b/webbtc/css/custom.css similarity index 100% rename from docs/css/custom.css rename to webbtc/css/custom.css diff --git a/docs/css/fonts/Roboto-Slab-Bold.woff b/webbtc/css/fonts/Roboto-Slab-Bold.woff similarity index 100% rename from docs/css/fonts/Roboto-Slab-Bold.woff rename to webbtc/css/fonts/Roboto-Slab-Bold.woff diff --git a/docs/css/fonts/Roboto-Slab-Bold.woff2 b/webbtc/css/fonts/Roboto-Slab-Bold.woff2 similarity index 100% rename from docs/css/fonts/Roboto-Slab-Bold.woff2 rename to webbtc/css/fonts/Roboto-Slab-Bold.woff2 diff --git a/docs/css/fonts/Roboto-Slab-Regular.woff b/webbtc/css/fonts/Roboto-Slab-Regular.woff similarity index 100% rename from docs/css/fonts/Roboto-Slab-Regular.woff rename to webbtc/css/fonts/Roboto-Slab-Regular.woff diff --git a/docs/css/fonts/Roboto-Slab-Regular.woff2 b/webbtc/css/fonts/Roboto-Slab-Regular.woff2 similarity index 100% rename from docs/css/fonts/Roboto-Slab-Regular.woff2 rename to webbtc/css/fonts/Roboto-Slab-Regular.woff2 diff --git a/docs/css/fonts/fontawesome-webfont.eot b/webbtc/css/fonts/fontawesome-webfont.eot similarity index 100% rename from docs/css/fonts/fontawesome-webfont.eot rename to webbtc/css/fonts/fontawesome-webfont.eot diff --git a/docs/css/fonts/fontawesome-webfont.svg b/webbtc/css/fonts/fontawesome-webfont.svg similarity index 100% rename from docs/css/fonts/fontawesome-webfont.svg rename to webbtc/css/fonts/fontawesome-webfont.svg diff --git a/docs/css/fonts/fontawesome-webfont.ttf b/webbtc/css/fonts/fontawesome-webfont.ttf similarity index 100% rename from docs/css/fonts/fontawesome-webfont.ttf rename to webbtc/css/fonts/fontawesome-webfont.ttf diff --git a/docs/css/fonts/fontawesome-webfont.woff b/webbtc/css/fonts/fontawesome-webfont.woff similarity index 100% rename from docs/css/fonts/fontawesome-webfont.woff rename to webbtc/css/fonts/fontawesome-webfont.woff diff --git a/docs/css/fonts/fontawesome-webfont.woff2 b/webbtc/css/fonts/fontawesome-webfont.woff2 similarity index 100% rename from docs/css/fonts/fontawesome-webfont.woff2 rename to webbtc/css/fonts/fontawesome-webfont.woff2 diff --git a/docs/css/fonts/lato-bold-italic.woff b/webbtc/css/fonts/lato-bold-italic.woff similarity index 100% rename from docs/css/fonts/lato-bold-italic.woff rename to webbtc/css/fonts/lato-bold-italic.woff diff --git a/docs/css/fonts/lato-bold-italic.woff2 b/webbtc/css/fonts/lato-bold-italic.woff2 similarity index 100% rename from docs/css/fonts/lato-bold-italic.woff2 rename to webbtc/css/fonts/lato-bold-italic.woff2 diff --git a/docs/css/fonts/lato-bold.woff b/webbtc/css/fonts/lato-bold.woff similarity index 100% rename from docs/css/fonts/lato-bold.woff rename to webbtc/css/fonts/lato-bold.woff diff --git a/docs/css/fonts/lato-bold.woff2 b/webbtc/css/fonts/lato-bold.woff2 similarity index 100% rename from docs/css/fonts/lato-bold.woff2 rename to webbtc/css/fonts/lato-bold.woff2 diff --git a/docs/css/fonts/lato-normal-italic.woff b/webbtc/css/fonts/lato-normal-italic.woff similarity index 100% rename from docs/css/fonts/lato-normal-italic.woff rename to webbtc/css/fonts/lato-normal-italic.woff diff --git a/docs/css/fonts/lato-normal-italic.woff2 b/webbtc/css/fonts/lato-normal-italic.woff2 similarity index 100% rename from docs/css/fonts/lato-normal-italic.woff2 rename to webbtc/css/fonts/lato-normal-italic.woff2 diff --git a/docs/css/fonts/lato-normal.woff b/webbtc/css/fonts/lato-normal.woff similarity index 100% rename from docs/css/fonts/lato-normal.woff rename to webbtc/css/fonts/lato-normal.woff diff --git a/docs/css/fonts/lato-normal.woff2 b/webbtc/css/fonts/lato-normal.woff2 similarity index 100% rename from docs/css/fonts/lato-normal.woff2 rename to webbtc/css/fonts/lato-normal.woff2 diff --git a/docs/css/theme.css b/webbtc/css/theme.css similarity index 100% rename from docs/css/theme.css rename to webbtc/css/theme.css diff --git a/docs/css/theme_extra.css b/webbtc/css/theme_extra.css similarity index 100% rename from docs/css/theme_extra.css rename to webbtc/css/theme_extra.css diff --git a/css/app.33e3e4f6.css b/webbtc/demo/css/app.33e3e4f6.css similarity index 100% rename from css/app.33e3e4f6.css rename to webbtc/demo/css/app.33e3e4f6.css diff --git a/css/app.4d16f0ed.css b/webbtc/demo/css/app.dec9e1f5.css similarity index 77% rename from css/app.4d16f0ed.css rename to webbtc/demo/css/app.dec9e1f5.css index 8e313ba..ca151ec 100644 --- a/css/app.4d16f0ed.css +++ b/webbtc/demo/css/app.dec9e1f5.css @@ -1 +1 @@ -pre[data-v-79b867c0]{background:#f4f4f4;border:1px solid #ddd;border-left:3px solid #f36d33;color:#666;page-break-inside:avoid;font-family:monospace;font-size:15px;line-height:1.6;margin-bottom:1.6em;max-width:100%;overflow:auto;padding:1em 1.5em;display:block;word-wrap:break-word} \ No newline at end of file +pre[data-v-8d2c3d76]{background:#f4f4f4;border:1px solid #ddd;border-left:3px solid #f36d33;color:#666;page-break-inside:avoid;font-family:monospace;font-size:15px;line-height:1.6;margin-bottom:1.6em;max-width:100%;overflow:auto;padding:1em 1.5em;display:block;word-wrap:break-word} \ No newline at end of file diff --git a/webbtc/demo/css/app.ece63869.css b/webbtc/demo/css/app.ece63869.css new file mode 100644 index 0000000..7059575 --- /dev/null +++ b/webbtc/demo/css/app.ece63869.css @@ -0,0 +1 @@ +pre[data-v-d84043f6]{background:#f4f4f4;border:1px solid #ddd;border-left:3px solid #f36d33;color:#666;page-break-inside:avoid;font-family:monospace;font-size:15px;line-height:1.6;margin-bottom:1.6em;max-width:100%;overflow:auto;padding:1em 1.5em;display:block;word-wrap:break-word} \ No newline at end of file diff --git a/css/chunk-vendors.d4e3e587.css b/webbtc/demo/css/chunk-vendors.d4e3e587.css similarity index 100% rename from css/chunk-vendors.d4e3e587.css rename to webbtc/demo/css/chunk-vendors.d4e3e587.css diff --git a/webbtc/demo/favicon.ico b/webbtc/demo/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..df36fcfb72584e00488330b560ebcf34a41c64c2 GIT binary patch literal 4286 zcmds*O-Phc6o&64GDVCEQHxsW(p4>LW*W<827=Unuo8sGpRux(DN@jWP-e29Wl%wj zY84_aq9}^Am9-cWTD5GGEo#+5Fi2wX_P*bo+xO!)p*7B;iKlbFd(U~_d(U?#hLj56 zPhFkj-|A6~Qk#@g^#D^U0XT1cu=c-vu1+SElX9NR;kzAUV(q0|dl0|%h|dI$%VICy zJnu2^L*Te9JrJMGh%-P79CL0}dq92RGU6gI{v2~|)p}sG5x0U*z<8U;Ij*hB9z?ei z@g6Xq-pDoPl=MANPiR7%172VA%r)kevtV-_5H*QJKFmd;8yA$98zCxBZYXTNZ#QFk2(TX0;Y2dt&WitL#$96|gJY=3xX zpCoi|YNzgO3R`f@IiEeSmKrPSf#h#Qd<$%Ej^RIeeYfsxhPMOG`S`Pz8q``=511zm zAm)MX5AV^5xIWPyEu7u>qYs?pn$I4nL9J!=K=SGlKLXpE<5x+2cDTXq?brj?n6sp= zphe9;_JHf40^9~}9i08r{XM$7HB!`{Ys~TK0kx<}ZQng`UPvH*11|q7&l9?@FQz;8 zx!=3<4seY*%=OlbCbcae?5^V_}*K>Uo6ZWV8mTyE^B=DKy7-sdLYkR5Z?paTgK-zyIkKjIcpyO z{+uIt&YSa_$QnN_@t~L014dyK(fOOo+W*MIxbA6Ndgr=Y!f#Tokqv}n<7-9qfHkc3 z=>a|HWqcX8fzQCT=dqVbogRq!-S>H%yA{1w#2Pn;=e>JiEj7Hl;zdt-2f+j2%DeVD zsW0Ab)ZK@0cIW%W7z}H{&~yGhn~D;aiP4=;m-HCo`BEI+Kd6 z={Xwx{TKxD#iCLfl2vQGDitKtN>z|-AdCN|$jTFDg0m3O`WLD4_s#$S literal 0 HcmV?d00001 diff --git a/webbtc/demo/index.html b/webbtc/demo/index.html new file mode 100644 index 0000000..39c15a4 --- /dev/null +++ b/webbtc/demo/index.html @@ -0,0 +1 @@ +specwrapper
\ No newline at end of file diff --git a/webbtc/demo/js/app.03034cc8.js b/webbtc/demo/js/app.03034cc8.js new file mode 100644 index 0000000..38c9045 --- /dev/null +++ b/webbtc/demo/js/app.03034cc8.js @@ -0,0 +1,2 @@ +(function(e){function n(n){for(var t,i,o=n[0],c=n[1],l=n[2],p=0,u=[];p\n \n \n\n \n

\n Action\n

\n\n \n\n \n

\n Bitcoin\n

\n\n \n\n \n

\n WebLN\n

\n\n \n\n \n

\n Proposed\n

\n\n \n
\n \n \n

{{item.name}}

\n

{{item.description}}

\n

Docs

\n \n\n \n

{{item.name}}

\n Request: {{item.bitcoin.signature}}\n
\n Response:\n
{{item.bitcoin.response}}
\n
\n\n \n\n \n

{{item.name}}

\n\n
\n Request: {{item.webln.signature}}\n
\n Response:\n
{{item.webln.response}}
\n
\n
\n \n\n \n

{{item.name}}

\n Request: {{item.wrapper.signature}}\n
\n
{{item.wrapper.response}}
\n
\n \n
\n
\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Index.vue?vue&type=template&id=8d2c3d76&scoped=true&\"\nimport script from \"./Index.vue?vue&type=script&lang=js&\"\nexport * from \"./Index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Index.vue?vue&type=style&index=0&id=8d2c3d76&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"8d2c3d76\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VRow } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBtn,VCol,VContainer,VRow})\n","\n\n\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--13-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--13-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=4fa97e81&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VApp } from 'vuetify/lib/components/VApp';\nimport { VAppBar } from 'vuetify/lib/components/VAppBar';\nimport { VMain } from 'vuetify/lib/components/VMain';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VApp,VAppBar,VMain,VSpacer})\n","import Vue from 'vue';\nimport Vuetify from 'vuetify/lib/framework';\n\nVue.use(Vuetify);\n\nexport default new Vuetify({\n});\n","import Vue from 'vue'\nimport App from './App.vue'\nimport vuetify from './plugins/vuetify'\n\nVue.config.productionTip = false\n\nnew Vue({\n vuetify,\n render: h => h(App)\n}).$mount('#app')\n"],"sourceRoot":""} \ No newline at end of file diff --git a/webbtc/demo/js/app.27405eeb.js b/webbtc/demo/js/app.27405eeb.js new file mode 100644 index 0000000..64e1c4a --- /dev/null +++ b/webbtc/demo/js/app.27405eeb.js @@ -0,0 +1,2 @@ +(function(e){function n(n){for(var s,i,o=n[0],c=n[1],l=n[2],p=0,u=[];p\n \n \n\n \n

\n Action\n

\n\n \n\n \n

\n Bitcoin\n

\n\n \n\n \n

\n WebLN\n

\n\n \n\n \n

\n Proposed\n

\n\n \n
\n \n \n

{{item.name}}

\n

{{item.description}}

\n

Docs

\n \n\n \n

{{item.name}}

\n Request: {{item.bitcoin.signature}}\n
\n Response:\n
{{item.bitcoin.response}}
\n
\n\n \n\n \n

{{item.name}}

\n\n
\n Request: {{item.webln.signature}}\n
\n Response:\n
{{item.webln.response}}
\n
\n
\n \n\n \n

{{item.name}}

\n Request: {{item.wrapper.signature}}\n
\n
{{item.wrapper.response}}
\n
\n \n
\n
\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Index.vue?vue&type=template&id=d84043f6&scoped=true&\"\nimport script from \"./Index.vue?vue&type=script&lang=js&\"\nexport * from \"./Index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Index.vue?vue&type=style&index=0&id=d84043f6&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d84043f6\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VRow } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBtn,VCol,VContainer,VRow})\n","\n\n\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--13-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--13-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=4fa97e81&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VApp } from 'vuetify/lib/components/VApp';\nimport { VAppBar } from 'vuetify/lib/components/VAppBar';\nimport { VMain } from 'vuetify/lib/components/VMain';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VApp,VAppBar,VMain,VSpacer})\n","import Vue from 'vue';\nimport Vuetify from 'vuetify/lib/framework';\n\nVue.use(Vuetify);\n\nexport default new Vuetify({\n});\n","import Vue from 'vue'\nimport App from './App.vue'\nimport vuetify from './plugins/vuetify'\n\nVue.config.productionTip = false\n\nnew Vue({\n vuetify,\n render: h => h(App)\n}).$mount('#app')\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Index.vue?vue&type=style&index=0&id=d84043f6&scoped=true&lang=css&\""],"sourceRoot":""} \ No newline at end of file diff --git a/js/app.3a0da46d.js b/webbtc/demo/js/app.3a0da46d.js similarity index 100% rename from js/app.3a0da46d.js rename to webbtc/demo/js/app.3a0da46d.js diff --git a/js/app.3a0da46d.js.map b/webbtc/demo/js/app.3a0da46d.js.map similarity index 100% rename from js/app.3a0da46d.js.map rename to webbtc/demo/js/app.3a0da46d.js.map diff --git a/js/chunk-vendors.73627de4.js b/webbtc/demo/js/chunk-vendors.73627de4.js similarity index 100% rename from js/chunk-vendors.73627de4.js rename to webbtc/demo/js/chunk-vendors.73627de4.js diff --git a/js/chunk-vendors.73627de4.js.map b/webbtc/demo/js/chunk-vendors.73627de4.js.map similarity index 100% rename from js/chunk-vendors.73627de4.js.map rename to webbtc/demo/js/chunk-vendors.73627de4.js.map diff --git a/docs/enable/index.html b/webbtc/enable/index.html similarity index 100% rename from docs/enable/index.html rename to webbtc/enable/index.html diff --git a/docs/extendability/extending/index.html b/webbtc/extendability/extending/index.html similarity index 100% rename from docs/extendability/extending/index.html rename to webbtc/extendability/extending/index.html diff --git a/docs/getting_started/index.html b/webbtc/getting_started/index.html similarity index 100% rename from docs/getting_started/index.html rename to webbtc/getting_started/index.html diff --git a/docs/img/favicon.ico b/webbtc/img/favicon.ico similarity index 100% rename from docs/img/favicon.ico rename to webbtc/img/favicon.ico diff --git a/docs/index.html b/webbtc/index.html similarity index 96% rename from docs/index.html rename to webbtc/index.html index fec844e..3e43317 100644 --- a/docs/index.html +++ b/webbtc/index.html @@ -124,7 +124,7 @@

A common convention in the Bitcoin web application ecosystem is for key management software (“wallets”) to expose their API via a JavaScript object in the web page. This object is called the common web wallet interface.

Historically, Provider implementations have exhibited conflicting interfaces and behaviors between wallets. This working group formalizes an Bitcoin extension API to promote wallet interoperability. The API is designed to be minimal, event-driven, and agnostic of transport and RPC protocols. Its functionality is easily extended by defining new RPC methods and message event types.

Historically, providers have been made available as window.bitcoin or window.webln in web browsers, but this convention is not part of the specification.

-

A list of current work in progress can be tracked from the issues tab in the playground repository, which includes a functional spec demonstration. A hosted instance of the demo can be found here together with the accompanying specification documentation.

+

A list of current work in progress can be tracked from the issues tab in the playground repository, which includes a functional spec demonstration. A hosted instance of the demo can be found here together with the accompanying specification documentation.