1 import {LoadWasm} from "./go";
2 import Bytom from "../index";
3 import keysSDK from "../sdk/keys.js";
6 window.wasmIsLoad = false;
7 window.wasmReceived = false;
10 let AllFuncReceivedResolve;
11 let funcReceived = new Promise(resolve => {
12 AllFuncReceivedResolve = resolve;
15 window.setFuncOver = function() {
16 AllFuncReceivedResolve();
18 window.resetWasmStatus = function() {
19 window.wasmIsLoad = false;
20 window.wasmReceived = false;
21 funcReceived = new Promise(resolve => {
22 AllFuncReceivedResolve = resolve;
26 //wasm call js func getKeyByXPub
27 window.getKeyByXPub = function (XPub) {
28 let keys = new keysSDK();
29 let returnPromise = new Promise((resolve, reject) => {
30 keys.getKeyByXPub(XPub).then(res => {
39 export async function resetKeyPassword(data) {
41 let res = newWasmResult();
42 AllFunc.resetKeyPassword(data, res);
44 if (res.hasOwnProperty('error')) {
45 throw new Error(res.error);
50 export async function createAccountReceiver(data) {
52 let res = newWasmResult();
53 AllFunc.createAccountReceiver(data, res);
55 if (res.hasOwnProperty('error')) {
56 throw new Error(res.error);
61 export async function createAccount(data) {
63 let res = newWasmResult();
64 AllFunc.createAccount(data, res);
66 if (res.hasOwnProperty('error')) {
67 throw new Error(res.error);
72 export async function createKey(data) {
74 let res = newWasmResult();
75 AllFunc.createKey(data, res);
77 if (res.hasOwnProperty('error')) {
78 throw new Error(res.error);
83 export async function scMulBase(pri) {
85 let res = newWasmResult();
86 AllFunc.scMulBase(pri, res);
88 if (res.hasOwnProperty('error')) {
89 throw new Error(res.error);
94 export function newWasmResult() {
96 res.wait = new Promise(function(resolve){
97 res.endFunc = resolve;
102 async function init() {
103 if (!window.wasmReceived) {
106 window.wasmReceived = true;
111 if(!window.wasmIsLoad) {
113 if (!WebAssembly.instantiateStreaming) { // polyfill
114 WebAssembly.instantiateStreaming = async (resp, importObject) => {
115 const source = await (await resp).arrayBuffer();
116 return await WebAssembly.instantiate(source, importObject);
121 WebAssembly.instantiateStreaming(fetch(Bytom.wasmPath), go.importObject).then(async (result) => {
123 inst = result.instance;
124 const run = go.run(inst);
125 window.wasmIsLoad = true;