[{"data":1,"prerenderedAt":1444},["ShallowReactive",2],{"docs-\u002Fdocs\u002Fcore-tech\u002Fbeam-web-wallet-starter-kit":3,"docs-surround-\u002Fdocs\u002Fcore-tech\u002Fbeam-web-wallet-starter-kit":1433},{"id":4,"title":5,"body":6,"description":21,"extension":1426,"image":1427,"meta":1428,"navTitle":1427,"navigation":550,"path":1429,"seo":1430,"stem":1431,"__hash__":1432},"docs\u002Fdocs\u002Fcore-tech\u002FBeam-Web-Wallet-Starter-Kit.md","Beam Web Wallet Starter Kit working draft",{"type":7,"value":8,"toc":1417},"minimark",[9,18,22,27,30,33,37,47,62,66,72,205,212,216,223,394,397,401,660,664,678,772,775,1319,1328,1332,1335,1413],[10,11,13,14],"h1",{"id":12},"beam-web-wallet-starter-kit-working-draft","Beam Web Wallet Starter Kit ",[15,16,17],"span",{},"working draft",[19,20,21],"p",{},"Web wallet starter allows you easily integrate Beam with your service, create a bunch of wallets and manage them... (TODO)",[23,24,26],"h2",{"id":25},"web-wallet-scheme","Web wallet scheme",[19,28,29],{},"Browser + Key Keeper \u003C==> Web Service\n(TODO: here will be detailed scheme).",[19,31,32],{},"Let's do a simple integration step by step with the examples.",[23,34,36],{"id":35},"obtain-binaries","Obtain binaries",[19,38,39,40,46],{},"You can download prebuild binaries from our server with nightly builds ",[41,42,43],"a",{"href":43,"rel":44},"https:\u002F\u002Fbuilds.beam-mw.com\u002Fmaster\u002F",[45],"nofollow"," or you can build all the parts yourself, here are build instructions (TODO)",[19,48,49,50,54,55,58,59],{},"At the end, you need ",[51,52,53],"code",{},"wallet-service-masternet",", ",[51,56,57],{},"wasm-key-keeper.js"," and ",[51,60,61],{},"wasm-key-keeper.wasm",[23,63,65],{"id":64},"load-key-keeper-to-the-client","Load Key Keeper to the client",[19,67,68,69,71],{},"Put the code near ",[51,70,57],{}," and start any static server.",[73,74,79],"pre",{"className":75,"code":76,"language":77,"meta":78,"style":78},"language-html shiki shiki-themes github-dark","\u003C!DOCTYPE html>\n\u003Chtml>\n\u003Cscript src='wasm-key-keeper.js'>\u003C\u002Fscript>\n\u003Cscript type=\"text\u002Fjavascript\">\n    Module().then(() => console.log(`Key Keeper module successfully loaded.`))\n\u003C\u002Fscript>\n\u003C\u002Fhtml>\n","html","",[51,80,81,100,110,135,152,186,196],{"__ignoreMap":78},[15,82,85,89,93,97],{"class":83,"line":84},"line",1,[15,86,88],{"class":87},"s95oV","\u003C!",[15,90,92],{"class":91},"s4JwU","DOCTYPE",[15,94,96],{"class":95},"svObZ"," html",[15,98,99],{"class":87},">\n",[15,101,103,106,108],{"class":83,"line":102},2,[15,104,105],{"class":87},"\u003C",[15,107,77],{"class":91},[15,109,99],{"class":87},[15,111,113,115,118,121,124,128,131,133],{"class":83,"line":112},3,[15,114,105],{"class":87},[15,116,117],{"class":91},"script",[15,119,120],{"class":95}," src",[15,122,123],{"class":87},"=",[15,125,127],{"class":126},"sU2Wk","'wasm-key-keeper.js'",[15,129,130],{"class":87},">\u003C\u002F",[15,132,117],{"class":91},[15,134,99],{"class":87},[15,136,138,140,142,145,147,150],{"class":83,"line":137},4,[15,139,105],{"class":87},[15,141,117],{"class":91},[15,143,144],{"class":95}," type",[15,146,123],{"class":87},[15,148,149],{"class":126},"\"text\u002Fjavascript\"",[15,151,99],{"class":87},[15,153,155,158,161,164,167,171,174,177,180,183],{"class":83,"line":154},5,[15,156,157],{"class":95},"    Module",[15,159,160],{"class":87},"().",[15,162,163],{"class":95},"then",[15,165,166],{"class":87},"(() ",[15,168,170],{"class":169},"snl16","=>",[15,172,173],{"class":87}," console.",[15,175,176],{"class":95},"log",[15,178,179],{"class":87},"(",[15,181,182],{"class":126},"`Key Keeper module successfully loaded.`",[15,184,185],{"class":87},"))\n",[15,187,189,192,194],{"class":83,"line":188},6,[15,190,191],{"class":87},"\u003C\u002F",[15,193,117],{"class":91},[15,195,99],{"class":87},[15,197,199,201,203],{"class":83,"line":198},7,[15,200,191],{"class":87},[15,202,77],{"class":91},[15,204,99],{"class":87},[19,206,207,208,211],{},"If all is OK you will see ",[51,209,210],{},"Key Keeper module successfully loaded."," message in the browser console.",[23,213,215],{"id":214},"connect-to-the-wallet-service","Connect to the Wallet Service",[19,217,218,219,222],{},"Run the service with the following parameters ",[51,220,221],{},"wallet-service-masternet -n eu-node04.masternet.beam.mw:8100 --port 8080",".",[73,224,226],{"className":75,"code":225,"language":77,"meta":78,"style":78},"\u003C!DOCTYPE html>\n\u003Chtml>\n\u003Cscript src='wasm-key-keeper.js'>\u003C\u002Fscript>\n\u003Cscript type=\"text\u002Fjavascript\">\n    Module().then(() => \n    {\n        console.log(`Key Keeper module successfully loaded.`)\n        \n        let connection = new WebSocket('ws:\u002F\u002F127.0.0.1:8080')\n        connection.onopen = () => console.log(`Connected to the Wallet Servce.`)\n    })\n\u003C\u002Fscript>\n\u003C\u002Fhtml>\n",[51,227,228,238,246,264,278,293,298,312,318,342,370,376,385],{"__ignoreMap":78},[15,229,230,232,234,236],{"class":83,"line":84},[15,231,88],{"class":87},[15,233,92],{"class":91},[15,235,96],{"class":95},[15,237,99],{"class":87},[15,239,240,242,244],{"class":83,"line":102},[15,241,105],{"class":87},[15,243,77],{"class":91},[15,245,99],{"class":87},[15,247,248,250,252,254,256,258,260,262],{"class":83,"line":112},[15,249,105],{"class":87},[15,251,117],{"class":91},[15,253,120],{"class":95},[15,255,123],{"class":87},[15,257,127],{"class":126},[15,259,130],{"class":87},[15,261,117],{"class":91},[15,263,99],{"class":87},[15,265,266,268,270,272,274,276],{"class":83,"line":137},[15,267,105],{"class":87},[15,269,117],{"class":91},[15,271,144],{"class":95},[15,273,123],{"class":87},[15,275,149],{"class":126},[15,277,99],{"class":87},[15,279,280,282,284,286,288,290],{"class":83,"line":154},[15,281,157],{"class":95},[15,283,160],{"class":87},[15,285,163],{"class":95},[15,287,166],{"class":87},[15,289,170],{"class":169},[15,291,292],{"class":87}," \n",[15,294,295],{"class":83,"line":188},[15,296,297],{"class":87},"    {\n",[15,299,300,303,305,307,309],{"class":83,"line":198},[15,301,302],{"class":87},"        console.",[15,304,176],{"class":95},[15,306,179],{"class":87},[15,308,182],{"class":126},[15,310,311],{"class":87},")\n",[15,313,315],{"class":83,"line":314},8,[15,316,317],{"class":87},"        \n",[15,319,321,324,327,329,332,335,337,340],{"class":83,"line":320},9,[15,322,323],{"class":169},"        let",[15,325,326],{"class":87}," connection ",[15,328,123],{"class":169},[15,330,331],{"class":169}," new",[15,333,334],{"class":95}," WebSocket",[15,336,179],{"class":87},[15,338,339],{"class":126},"'ws:\u002F\u002F127.0.0.1:8080'",[15,341,311],{"class":87},[15,343,345,348,351,354,357,359,361,363,365,368],{"class":83,"line":344},10,[15,346,347],{"class":87},"        connection.",[15,349,350],{"class":95},"onopen",[15,352,353],{"class":169}," =",[15,355,356],{"class":87}," () ",[15,358,170],{"class":169},[15,360,173],{"class":87},[15,362,176],{"class":95},[15,364,179],{"class":87},[15,366,367],{"class":126},"`Connected to the Wallet Servce.`",[15,369,311],{"class":87},[15,371,373],{"class":83,"line":372},11,[15,374,375],{"class":87},"    })\n",[15,377,379,381,383],{"class":83,"line":378},12,[15,380,191],{"class":87},[15,382,117],{"class":91},[15,384,99],{"class":87},[15,386,388,390,392],{"class":83,"line":387},13,[15,389,191],{"class":87},[15,391,77],{"class":91},[15,393,99],{"class":87},[19,395,396],{},"We are using WebSockets here, because we need two-way communication with the service and service can request any keykeeper method, to sign transaction for example.",[23,398,400],{"id":399},"init-key-keeper-with-a-seed-phase","Init Key Keeper with a seed phase",[73,402,404],{"className":75,"code":403,"language":77,"meta":78,"style":78},"\u003C!DOCTYPE html>\n\u003Chtml>\n\u003Cscript src='wasm-key-keeper.js'>\u003C\u002Fscript>\n\u003Cscript type=\"text\u002Fjavascript\">\n    Module().then(Module => \n    {\n        console.log(`Key Keeper module successfully loaded.`)\n        \n        let connection = new WebSocket('ws:\u002F\u002F127.0.0.1:8080')\n        connection.onopen = () => \n        {\n            console.log(`Connected to the Wallet Service.`)\n\n            \u002F\u002F generate seed phrase\n            let seed = Module.KeyKeeper.GeneratePhrase()\n            console.log(`New Seed: ${seed}`)\n\n            \u002F\u002F init Key Keeper with the seed phrase\n            let keykeeper = new Module.KeyKeeper(seed)\n        }\n    })\n\u003C\u002Fscript>\n\u003C\u002Fhtml>\n",[51,405,406,416,424,442,456,475,479,491,495,513,527,532,546,552,559,579,599,604,610,631,637,642,651],{"__ignoreMap":78},[15,407,408,410,412,414],{"class":83,"line":84},[15,409,88],{"class":87},[15,411,92],{"class":91},[15,413,96],{"class":95},[15,415,99],{"class":87},[15,417,418,420,422],{"class":83,"line":102},[15,419,105],{"class":87},[15,421,77],{"class":91},[15,423,99],{"class":87},[15,425,426,428,430,432,434,436,438,440],{"class":83,"line":112},[15,427,105],{"class":87},[15,429,117],{"class":91},[15,431,120],{"class":95},[15,433,123],{"class":87},[15,435,127],{"class":126},[15,437,130],{"class":87},[15,439,117],{"class":91},[15,441,99],{"class":87},[15,443,444,446,448,450,452,454],{"class":83,"line":137},[15,445,105],{"class":87},[15,447,117],{"class":91},[15,449,144],{"class":95},[15,451,123],{"class":87},[15,453,149],{"class":126},[15,455,99],{"class":87},[15,457,458,460,462,464,466,470,473],{"class":83,"line":154},[15,459,157],{"class":95},[15,461,160],{"class":87},[15,463,163],{"class":95},[15,465,179],{"class":87},[15,467,469],{"class":468},"s9osk","Module",[15,471,472],{"class":169}," =>",[15,474,292],{"class":87},[15,476,477],{"class":83,"line":188},[15,478,297],{"class":87},[15,480,481,483,485,487,489],{"class":83,"line":198},[15,482,302],{"class":87},[15,484,176],{"class":95},[15,486,179],{"class":87},[15,488,182],{"class":126},[15,490,311],{"class":87},[15,492,493],{"class":83,"line":314},[15,494,317],{"class":87},[15,496,497,499,501,503,505,507,509,511],{"class":83,"line":320},[15,498,323],{"class":169},[15,500,326],{"class":87},[15,502,123],{"class":169},[15,504,331],{"class":169},[15,506,334],{"class":95},[15,508,179],{"class":87},[15,510,339],{"class":126},[15,512,311],{"class":87},[15,514,515,517,519,521,523,525],{"class":83,"line":344},[15,516,347],{"class":87},[15,518,350],{"class":95},[15,520,353],{"class":169},[15,522,356],{"class":87},[15,524,170],{"class":169},[15,526,292],{"class":87},[15,528,529],{"class":83,"line":372},[15,530,531],{"class":87},"        {\n",[15,533,534,537,539,541,544],{"class":83,"line":378},[15,535,536],{"class":87},"            console.",[15,538,176],{"class":95},[15,540,179],{"class":87},[15,542,543],{"class":126},"`Connected to the Wallet Service.`",[15,545,311],{"class":87},[15,547,548],{"class":83,"line":387},[15,549,551],{"emptyLinePlaceholder":550},true,"\n",[15,553,555],{"class":83,"line":554},14,[15,556,558],{"class":557},"sAwPA","            \u002F\u002F generate seed phrase\n",[15,560,562,565,568,570,573,576],{"class":83,"line":561},15,[15,563,564],{"class":169},"            let",[15,566,567],{"class":87}," seed ",[15,569,123],{"class":169},[15,571,572],{"class":87}," Module.KeyKeeper.",[15,574,575],{"class":95},"GeneratePhrase",[15,577,578],{"class":87},"()\n",[15,580,582,584,586,588,591,594,597],{"class":83,"line":581},16,[15,583,536],{"class":87},[15,585,176],{"class":95},[15,587,179],{"class":87},[15,589,590],{"class":126},"`New Seed: ${",[15,592,593],{"class":87},"seed",[15,595,596],{"class":126},"}`",[15,598,311],{"class":87},[15,600,602],{"class":83,"line":601},17,[15,603,551],{"emptyLinePlaceholder":550},[15,605,607],{"class":83,"line":606},18,[15,608,609],{"class":557},"            \u002F\u002F init Key Keeper with the seed phrase\n",[15,611,613,615,618,620,622,625,628],{"class":83,"line":612},19,[15,614,564],{"class":169},[15,616,617],{"class":87}," keykeeper ",[15,619,123],{"class":169},[15,621,331],{"class":169},[15,623,624],{"class":87}," Module.",[15,626,627],{"class":95},"KeyKeeper",[15,629,630],{"class":87},"(seed)\n",[15,632,634],{"class":83,"line":633},20,[15,635,636],{"class":87},"        }\n",[15,638,640],{"class":83,"line":639},21,[15,641,375],{"class":87},[15,643,645,647,649],{"class":83,"line":644},22,[15,646,191],{"class":87},[15,648,117],{"class":91},[15,650,99],{"class":87},[15,652,654,656,658],{"class":83,"line":653},23,[15,655,191],{"class":87},[15,657,77],{"class":91},[15,659,99],{"class":87},[23,661,663],{"id":662},"create-wallet","Create wallet",[19,665,666,667,670,671,58,674,677],{},"To create wallet you have to call ",[51,668,669],{},"create_wallet"," jsonrpc api method with ",[51,672,673],{},"pass",[51,675,676],{},"ownerkey"," parameters.",[73,679,683],{"className":680,"code":681,"language":682,"meta":78,"style":78},"language-js shiki shiki-themes github-dark","{\n    jsonrpc:'2.0',\n    id:'\u003Crequest ID>',\n    method:'create_wallet',\n    params:\n    {\n        pass:'\u003Cwallet password>'\n        ownerkey:'\u003Cowner key>',\n    }\n}\n","js",[51,684,685,690,704,716,728,736,740,750,762,767],{"__ignoreMap":78},[15,686,687],{"class":83,"line":84},[15,688,689],{"class":87},"{\n",[15,691,692,695,698,701],{"class":83,"line":102},[15,693,694],{"class":95},"    jsonrpc",[15,696,697],{"class":87},":",[15,699,700],{"class":126},"'2.0'",[15,702,703],{"class":87},",\n",[15,705,706,709,711,714],{"class":83,"line":112},[15,707,708],{"class":95},"    id",[15,710,697],{"class":87},[15,712,713],{"class":126},"'\u003Crequest ID>'",[15,715,703],{"class":87},[15,717,718,721,723,726],{"class":83,"line":137},[15,719,720],{"class":95},"    method",[15,722,697],{"class":87},[15,724,725],{"class":126},"'create_wallet'",[15,727,703],{"class":87},[15,729,730,733],{"class":83,"line":154},[15,731,732],{"class":95},"    params",[15,734,735],{"class":87},":\n",[15,737,738],{"class":83,"line":188},[15,739,297],{"class":87},[15,741,742,745,747],{"class":83,"line":198},[15,743,744],{"class":95},"        pass",[15,746,697],{"class":87},[15,748,749],{"class":126},"'\u003Cwallet password>'\n",[15,751,752,755,757,760],{"class":83,"line":314},[15,753,754],{"class":95},"        ownerkey",[15,756,697],{"class":87},[15,758,759],{"class":126},"'\u003Cowner key>'",[15,761,703],{"class":87},[15,763,764],{"class":83,"line":320},[15,765,766],{"class":87},"    }\n",[15,768,769],{"class":83,"line":344},[15,770,771],{"class":87},"}\n",[19,773,774],{},"Here is an example:",[73,776,778],{"className":75,"code":777,"language":77,"meta":78,"style":78},"\u003C!DOCTYPE html>\n\u003Chtml>\n\u003Cscript src='wasm-key-keeper.js'>\u003C\u002Fscript>\n\u003Cscript type=\"text\u002Fjavascript\">\n    Module().then(Module => \n    {\n        console.log(`Key Keeper module successfully loaded.`)\n        \n        let connection = new WebSocket('ws:\u002F\u002F127.0.0.1:8080')\n        connection.onopen = () => \n        {\n            console.log(`Connected to the Wallet Service.`)\n\n            \u002F\u002F generate seed phrase\n            let seed = Module.KeyKeeper.GeneratePhrase()\n            console.log(`New Seed: ${seed}`)\n\n            \u002F\u002F init Key Keeper with the seed phrase\n            let keykeeper = new Module.KeyKeeper(seed)\n\n            connection.onmessage = e => \n            {\n\n                let data = JSON.parse(e.data)\n\n                if(data.result)     console.log(`Wallet is successfully created, your ID: ${data.result}`)\n                else if(data.error) console.log(`error occured, code:${data.error.code} text:${data.error.data}`)\n                else if(data.method) connection.send(keykeeper.invokeServiceMethod(e.data))\n            }\n\n            let walletPassword = '12345678'\n            let ownerKey = keykeeper.getOwnerKey(walletPassword)\n            console.log(`Owner Key: ${ownerKey}`)\n\n            \u002F\u002F create a wallet request\n            connection.send(JSON.stringify({\n                jsonrpc: '2.0',\n                id: 0,\n                method: 'create_wallet',\n                params:\n                {\n                    pass: walletPassword,\n                    ownerkey: ownerKey\n                }\n            }))\n        }\n    })\n\u003C\u002Fscript>\n\u003C\u002Fhtml>\n",[51,779,780,790,798,816,830,846,850,862,866,884,898,902,914,918,922,936,952,956,960,976,980,997,1002,1006,1029,1034,1062,1109,1131,1137,1142,1155,1174,1193,1198,1204,1224,1234,1245,1255,1261,1267,1273,1279,1285,1291,1296,1301,1310],{"__ignoreMap":78},[15,781,782,784,786,788],{"class":83,"line":84},[15,783,88],{"class":87},[15,785,92],{"class":91},[15,787,96],{"class":95},[15,789,99],{"class":87},[15,791,792,794,796],{"class":83,"line":102},[15,793,105],{"class":87},[15,795,77],{"class":91},[15,797,99],{"class":87},[15,799,800,802,804,806,808,810,812,814],{"class":83,"line":112},[15,801,105],{"class":87},[15,803,117],{"class":91},[15,805,120],{"class":95},[15,807,123],{"class":87},[15,809,127],{"class":126},[15,811,130],{"class":87},[15,813,117],{"class":91},[15,815,99],{"class":87},[15,817,818,820,822,824,826,828],{"class":83,"line":137},[15,819,105],{"class":87},[15,821,117],{"class":91},[15,823,144],{"class":95},[15,825,123],{"class":87},[15,827,149],{"class":126},[15,829,99],{"class":87},[15,831,832,834,836,838,840,842,844],{"class":83,"line":154},[15,833,157],{"class":95},[15,835,160],{"class":87},[15,837,163],{"class":95},[15,839,179],{"class":87},[15,841,469],{"class":468},[15,843,472],{"class":169},[15,845,292],{"class":87},[15,847,848],{"class":83,"line":188},[15,849,297],{"class":87},[15,851,852,854,856,858,860],{"class":83,"line":198},[15,853,302],{"class":87},[15,855,176],{"class":95},[15,857,179],{"class":87},[15,859,182],{"class":126},[15,861,311],{"class":87},[15,863,864],{"class":83,"line":314},[15,865,317],{"class":87},[15,867,868,870,872,874,876,878,880,882],{"class":83,"line":320},[15,869,323],{"class":169},[15,871,326],{"class":87},[15,873,123],{"class":169},[15,875,331],{"class":169},[15,877,334],{"class":95},[15,879,179],{"class":87},[15,881,339],{"class":126},[15,883,311],{"class":87},[15,885,886,888,890,892,894,896],{"class":83,"line":344},[15,887,347],{"class":87},[15,889,350],{"class":95},[15,891,353],{"class":169},[15,893,356],{"class":87},[15,895,170],{"class":169},[15,897,292],{"class":87},[15,899,900],{"class":83,"line":372},[15,901,531],{"class":87},[15,903,904,906,908,910,912],{"class":83,"line":378},[15,905,536],{"class":87},[15,907,176],{"class":95},[15,909,179],{"class":87},[15,911,543],{"class":126},[15,913,311],{"class":87},[15,915,916],{"class":83,"line":387},[15,917,551],{"emptyLinePlaceholder":550},[15,919,920],{"class":83,"line":554},[15,921,558],{"class":557},[15,923,924,926,928,930,932,934],{"class":83,"line":561},[15,925,564],{"class":169},[15,927,567],{"class":87},[15,929,123],{"class":169},[15,931,572],{"class":87},[15,933,575],{"class":95},[15,935,578],{"class":87},[15,937,938,940,942,944,946,948,950],{"class":83,"line":581},[15,939,536],{"class":87},[15,941,176],{"class":95},[15,943,179],{"class":87},[15,945,590],{"class":126},[15,947,593],{"class":87},[15,949,596],{"class":126},[15,951,311],{"class":87},[15,953,954],{"class":83,"line":601},[15,955,551],{"emptyLinePlaceholder":550},[15,957,958],{"class":83,"line":606},[15,959,609],{"class":557},[15,961,962,964,966,968,970,972,974],{"class":83,"line":612},[15,963,564],{"class":169},[15,965,617],{"class":87},[15,967,123],{"class":169},[15,969,331],{"class":169},[15,971,624],{"class":87},[15,973,627],{"class":95},[15,975,630],{"class":87},[15,977,978],{"class":83,"line":633},[15,979,551],{"emptyLinePlaceholder":550},[15,981,982,985,988,990,993,995],{"class":83,"line":639},[15,983,984],{"class":87},"            connection.",[15,986,987],{"class":95},"onmessage",[15,989,353],{"class":169},[15,991,992],{"class":468}," e",[15,994,472],{"class":169},[15,996,292],{"class":87},[15,998,999],{"class":83,"line":644},[15,1000,1001],{"class":87},"            {\n",[15,1003,1004],{"class":83,"line":653},[15,1005,551],{"emptyLinePlaceholder":550},[15,1007,1009,1012,1015,1017,1021,1023,1026],{"class":83,"line":1008},24,[15,1010,1011],{"class":169},"                let",[15,1013,1014],{"class":87}," data ",[15,1016,123],{"class":169},[15,1018,1020],{"class":1019},"sDLfK"," JSON",[15,1022,222],{"class":87},[15,1024,1025],{"class":95},"parse",[15,1027,1028],{"class":87},"(e.data)\n",[15,1030,1032],{"class":83,"line":1031},25,[15,1033,551],{"emptyLinePlaceholder":550},[15,1035,1037,1040,1043,1045,1047,1050,1053,1055,1058,1060],{"class":83,"line":1036},26,[15,1038,1039],{"class":169},"                if",[15,1041,1042],{"class":87},"(data.result)     console.",[15,1044,176],{"class":95},[15,1046,179],{"class":87},[15,1048,1049],{"class":126},"`Wallet is successfully created, your ID: ${",[15,1051,1052],{"class":87},"data",[15,1054,222],{"class":126},[15,1056,1057],{"class":87},"result",[15,1059,596],{"class":126},[15,1061,311],{"class":87},[15,1063,1065,1068,1071,1074,1076,1078,1081,1083,1085,1088,1090,1092,1095,1097,1099,1101,1103,1105,1107],{"class":83,"line":1064},27,[15,1066,1067],{"class":169},"                else",[15,1069,1070],{"class":169}," if",[15,1072,1073],{"class":87},"(data.error) console.",[15,1075,176],{"class":95},[15,1077,179],{"class":87},[15,1079,1080],{"class":126},"`error occured, code:${",[15,1082,1052],{"class":87},[15,1084,222],{"class":126},[15,1086,1087],{"class":87},"error",[15,1089,222],{"class":126},[15,1091,51],{"class":87},[15,1093,1094],{"class":126},"} text:${",[15,1096,1052],{"class":87},[15,1098,222],{"class":126},[15,1100,1087],{"class":87},[15,1102,222],{"class":126},[15,1104,1052],{"class":87},[15,1106,596],{"class":126},[15,1108,311],{"class":87},[15,1110,1112,1114,1116,1119,1122,1125,1128],{"class":83,"line":1111},28,[15,1113,1067],{"class":169},[15,1115,1070],{"class":169},[15,1117,1118],{"class":87},"(data.method) connection.",[15,1120,1121],{"class":95},"send",[15,1123,1124],{"class":87},"(keykeeper.",[15,1126,1127],{"class":95},"invokeServiceMethod",[15,1129,1130],{"class":87},"(e.data))\n",[15,1132,1134],{"class":83,"line":1133},29,[15,1135,1136],{"class":87},"            }\n",[15,1138,1140],{"class":83,"line":1139},30,[15,1141,551],{"emptyLinePlaceholder":550},[15,1143,1145,1147,1150,1152],{"class":83,"line":1144},31,[15,1146,564],{"class":169},[15,1148,1149],{"class":87}," walletPassword ",[15,1151,123],{"class":169},[15,1153,1154],{"class":126}," '12345678'\n",[15,1156,1158,1160,1163,1165,1168,1171],{"class":83,"line":1157},32,[15,1159,564],{"class":169},[15,1161,1162],{"class":87}," ownerKey ",[15,1164,123],{"class":169},[15,1166,1167],{"class":87}," keykeeper.",[15,1169,1170],{"class":95},"getOwnerKey",[15,1172,1173],{"class":87},"(walletPassword)\n",[15,1175,1177,1179,1181,1183,1186,1189,1191],{"class":83,"line":1176},33,[15,1178,536],{"class":87},[15,1180,176],{"class":95},[15,1182,179],{"class":87},[15,1184,1185],{"class":126},"`Owner Key: ${",[15,1187,1188],{"class":87},"ownerKey",[15,1190,596],{"class":126},[15,1192,311],{"class":87},[15,1194,1196],{"class":83,"line":1195},34,[15,1197,551],{"emptyLinePlaceholder":550},[15,1199,1201],{"class":83,"line":1200},35,[15,1202,1203],{"class":557},"            \u002F\u002F create a wallet request\n",[15,1205,1207,1209,1211,1213,1216,1218,1221],{"class":83,"line":1206},36,[15,1208,984],{"class":87},[15,1210,1121],{"class":95},[15,1212,179],{"class":87},[15,1214,1215],{"class":1019},"JSON",[15,1217,222],{"class":87},[15,1219,1220],{"class":95},"stringify",[15,1222,1223],{"class":87},"({\n",[15,1225,1227,1230,1232],{"class":83,"line":1226},37,[15,1228,1229],{"class":87},"                jsonrpc: ",[15,1231,700],{"class":126},[15,1233,703],{"class":87},[15,1235,1237,1240,1243],{"class":83,"line":1236},38,[15,1238,1239],{"class":87},"                id: ",[15,1241,1242],{"class":1019},"0",[15,1244,703],{"class":87},[15,1246,1248,1251,1253],{"class":83,"line":1247},39,[15,1249,1250],{"class":87},"                method: ",[15,1252,725],{"class":126},[15,1254,703],{"class":87},[15,1256,1258],{"class":83,"line":1257},40,[15,1259,1260],{"class":87},"                params:\n",[15,1262,1264],{"class":83,"line":1263},41,[15,1265,1266],{"class":87},"                {\n",[15,1268,1270],{"class":83,"line":1269},42,[15,1271,1272],{"class":87},"                    pass: walletPassword,\n",[15,1274,1276],{"class":83,"line":1275},43,[15,1277,1278],{"class":87},"                    ownerkey: ownerKey\n",[15,1280,1282],{"class":83,"line":1281},44,[15,1283,1284],{"class":87},"                }\n",[15,1286,1288],{"class":83,"line":1287},45,[15,1289,1290],{"class":87},"            }))\n",[15,1292,1294],{"class":83,"line":1293},46,[15,1295,636],{"class":87},[15,1297,1299],{"class":83,"line":1298},47,[15,1300,375],{"class":87},[15,1302,1304,1306,1308],{"class":83,"line":1303},48,[15,1305,191],{"class":87},[15,1307,117],{"class":91},[15,1309,99],{"class":87},[15,1311,1313,1315,1317],{"class":83,"line":1312},49,[15,1314,191],{"class":87},[15,1316,77],{"class":91},[15,1318,99],{"class":87},[19,1320,1321,1322,1327],{},"Now, when you got your wallet ID, you can call any ",[41,1323,1326],{"href":1324,"rel":1325},"https:\u002F\u002Fgithub.com\u002FBeamMW\u002Fbeam\u002Fwiki\u002FBeam-wallet-protocol-API#api",[45],"Wallet API"," method, like check status, create an address or do a transaction.",[23,1329,1331],{"id":1330},"open-wallet","Open wallet",[19,1333,1334],{},"Open wallet with given ID and password.",[73,1336,1338],{"className":680,"code":1337,"language":682,"meta":78,"style":78},"{\n    jsonrpc:'2.0',\n    id:'\u003Crequest ID>',\n    method:'open_wallet',\n    params:\n    {\n        id:'\u003Cwallet ID>',\n        pass:'\u003Cwallet password>'\n    }\n}\n",[51,1339,1340,1344,1354,1364,1375,1381,1385,1397,1405,1409],{"__ignoreMap":78},[15,1341,1342],{"class":83,"line":84},[15,1343,689],{"class":87},[15,1345,1346,1348,1350,1352],{"class":83,"line":102},[15,1347,694],{"class":95},[15,1349,697],{"class":87},[15,1351,700],{"class":126},[15,1353,703],{"class":87},[15,1355,1356,1358,1360,1362],{"class":83,"line":112},[15,1357,708],{"class":95},[15,1359,697],{"class":87},[15,1361,713],{"class":126},[15,1363,703],{"class":87},[15,1365,1366,1368,1370,1373],{"class":83,"line":137},[15,1367,720],{"class":95},[15,1369,697],{"class":87},[15,1371,1372],{"class":126},"'open_wallet'",[15,1374,703],{"class":87},[15,1376,1377,1379],{"class":83,"line":154},[15,1378,732],{"class":95},[15,1380,735],{"class":87},[15,1382,1383],{"class":83,"line":188},[15,1384,297],{"class":87},[15,1386,1387,1390,1392,1395],{"class":83,"line":198},[15,1388,1389],{"class":95},"        id",[15,1391,697],{"class":87},[15,1393,1394],{"class":126},"'\u003Cwallet ID>'",[15,1396,703],{"class":87},[15,1398,1399,1401,1403],{"class":83,"line":314},[15,1400,744],{"class":95},[15,1402,697],{"class":87},[15,1404,749],{"class":126},[15,1406,1407],{"class":83,"line":320},[15,1408,766],{"class":87},[15,1410,1411],{"class":83,"line":344},[15,1412,771],{"class":87},[1414,1415,1416],"style",{},"html pre.shiki code .s95oV, html code.shiki .s95oV{--shiki-default:#E1E4E8}html pre.shiki code .s4JwU, html code.shiki .s4JwU{--shiki-default:#85E89D}html pre.shiki code .svObZ, html code.shiki .svObZ{--shiki-default:#B392F0}html pre.shiki code .sU2Wk, html code.shiki .sU2Wk{--shiki-default:#9ECBFF}html pre.shiki code .snl16, html code.shiki .snl16{--shiki-default:#F97583}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .s9osk, html code.shiki .s9osk{--shiki-default:#FFAB70}html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}html pre.shiki code .sDLfK, html code.shiki .sDLfK{--shiki-default:#79B8FF}",{"title":78,"searchDepth":102,"depth":102,"links":1418},[1419,1420,1421,1422,1423,1424,1425],{"id":25,"depth":102,"text":26},{"id":35,"depth":102,"text":36},{"id":64,"depth":102,"text":65},{"id":214,"depth":102,"text":215},{"id":399,"depth":102,"text":400},{"id":662,"depth":102,"text":663},{"id":1330,"depth":102,"text":1331},"md",null,{},"\u002Fdocs\u002Fcore-tech\u002Fbeam-web-wallet-starter-kit",{"title":5,"description":21},"docs\u002Fcore-tech\u002FBeam-Web-Wallet-Starter-Kit","_aAZvc4_sMzpDrVhl8lEBD0HDbw6le-Yf5BsIfXb7xI",[1434,1439],{"title":1435,"path":1436,"stem":1437,"description":1438,"children":-1},"Beam Wallet Database","\u002Fdocs\u002Fcore-tech\u002Fbeam-wallet-database","docs\u002Fcore-tech\u002FBeam-Wallet-Database","Since in Mimblewimble only UTXO related information is available on chain, most of the Wallet state should be maintained locally and store in the Wallet Database, which is described in this chapter.",{"title":1440,"path":1441,"stem":1442,"description":1443,"children":-1},"Beam mining protocol API (draft)","\u002Fdocs\u002Fcore-tech\u002Fbeam-mining-protocol-api-(stratum)","docs\u002Fcore-tech\u002FBeam-mining-protocol-API-(Stratum)","The protocol is based on JSON RPC and uses Long Polling to have a conversation between Miner and Node. It describes only mining behavior without payouts at the moment.",1783006061987]