Commit 3f0363a7 authored by Eriksson Monteiro's avatar Eriksson Monteiro

update millix node v1.11.1. add fees UI.

parent df1ab1cc
<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="/favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="description" content="Web site created using create-react-app"/><title>millix</title><link href="/static/css/2.chunk.css" rel="stylesheet"><link href="/static/css/main.chunk.css" rel="stylesheet"></head><body><div id="app" class="wrapper"></div><script>!function(e){function t(t){for(var n,a,i=t[0],l=t[1],c=t[2],s=0,p=[];s<i.length;s++)a=i[s],Object.prototype.hasOwnProperty.call(o,a)&&o[a]&&p.push(o[a][0]),o[a]=0;for(n in l)Object.prototype.hasOwnProperty.call(l,n)&&(e[n]=l[n]);for(f&&f(t);p.length;)p.shift()();return u.push.apply(u,c||[]),r()}function r(){for(var e,t=0;t<u.length;t++){for(var r=u[t],n=!0,i=1;i<r.length;i++){var l=r[i];0!==o[l]&&(n=!1)}n&&(u.splice(t--,1),e=a(a.s=r[0]))}return e}var n={},o={1:0},u=[];function a(t){if(n[t])return n[t].exports;var r=n[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,a),r.l=!0,r.exports}a.e=function(e){var t=[],r=o[e];if(0!==r)if(r)t.push(r[2]);else{var n=new Promise((function(t,n){r=o[e]=[t,n]}));t.push(r[2]=n);var u,i=document.createElement("script");i.charset="utf-8",i.timeout=120,a.nc&&i.setAttribute("nonce",a.nc),i.src=function(e){return a.p+"static/js/"+({}[e]||e)+".chunk.js"}(e);var l=new Error;u=function(t){i.onerror=i.onload=null,clearTimeout(c);var r=o[e];if(0!==r){if(r){var n=t&&("load"===t.type?"missing":t.type),u=t&&t.target&&t.target.src;l.message="Loading chunk "+e+" failed.\n("+n+": "+u+")",l.name="ChunkLoadError",l.type=n,l.request=u,r[1](l)}o[e]=void 0}};var c=setTimeout((function(){u({type:"timeout",target:i})}),12e4);i.onerror=i.onload=u,document.head.appendChild(i)}return Promise.all(t)},a.m=e,a.c=n,a.d=function(e,t,r){a.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},a.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.t=function(e,t){if(1&t&&(e=a(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(a.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)a.d(r,n,function(t){return e[t]}.bind(null,n));return r},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,"a",t),t},a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.p="/",a.oe=function(e){throw console.error(e),e};var i=this["webpackJsonpwallet-light"]=this["webpackJsonpwallet-light"]||[],l=i.push.bind(i);i.push=t,i=i.slice();for(var c=0;c<i.length;c++)t(i[c]);var f=l;r()}([])</script><script src="/static/js/2.chunk.js"></script><script src="/static/js/main.chunk.js"></script></body></html> <!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="/favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="description" content="Web site created using create-react-app"/><title>millix</title><link href="/static/css/2.chunk.css" rel="stylesheet"><link href="/static/css/main.chunk.css" rel="stylesheet"></head><body><div id="app" class="wrapper"></div><script>!function(e){function t(t){for(var n,i,a=t[0],l=t[1],c=t[2],s=0,p=[];s<a.length;s++)i=a[s],Object.prototype.hasOwnProperty.call(o,i)&&o[i]&&p.push(o[i][0]),o[i]=0;for(n in l)Object.prototype.hasOwnProperty.call(l,n)&&(e[n]=l[n]);for(f&&f(t);p.length;)p.shift()();return u.push.apply(u,c||[]),r()}function r(){for(var e,t=0;t<u.length;t++){for(var r=u[t],n=!0,a=1;a<r.length;a++){var l=r[a];0!==o[l]&&(n=!1)}n&&(u.splice(t--,1),e=i(i.s=r[0]))}return e}var n={},o={1:0},u=[];function i(t){if(n[t])return n[t].exports;var r=n[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,i),r.l=!0,r.exports}i.e=function(e){var t=[],r=o[e];if(0!==r)if(r)t.push(r[2]);else{var n=new Promise((function(t,n){r=o[e]=[t,n]}));t.push(r[2]=n);var u,a=document.createElement("script");a.charset="utf-8",a.timeout=120,i.nc&&a.setAttribute("nonce",i.nc),a.src=function(e){return i.p+"static/js/"+({}[e]||e)+".chunk.js"}(e);var l=new Error;u=function(t){a.onerror=a.onload=null,clearTimeout(c);var r=o[e];if(0!==r){if(r){var n=t&&("load"===t.type?"missing":t.type),u=t&&t.target&&t.target.src;l.message="Loading chunk "+e+" failed.\n("+n+": "+u+")",l.name="ChunkLoadError",l.type=n,l.request=u,r[1](l)}o[e]=void 0}};var c=setTimeout((function(){u({type:"timeout",target:a})}),12e4);a.onerror=a.onload=u,document.head.appendChild(a)}return Promise.all(t)},i.m=e,i.c=n,i.d=function(e,t,r){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(i.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)i.d(r,n,function(t){return e[t]}.bind(null,n));return r},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/",i.oe=function(e){throw console.error(e),e};var a=this["webpackJsonpwallet-light"]=this["webpackJsonpwallet-light"]||[],l=a.push.bind(a);a.push=t,a=a.slice();for(var c=0;c<a.length;c++)t(a[c]);var f=l;r()}([])</script><script src="/static/js/2.chunk.js"></script><script src="/static/js/main.chunk.js"></script></body></html>
\ No newline at end of file \ No newline at end of file
(this["webpackJsonpwallet-light"]=this["webpackJsonpwallet-light"]||[]).push([[3],{149:function(t,e,n){"use strict";n.r(e),n.d(e,"getCLS",(function(){return d})),n.d(e,"getFCP",(function(){return S})),n.d(e,"getFID",(function(){return F})),n.d(e,"getLCP",(function(){return k})),n.d(e,"getTTFB",(function(){return C}));var i,a,r,o,u=function(t,e){return{name:t,value:void 0===e?-1:e,delta:0,entries:[],id:"v1-".concat(Date.now(),"-").concat(Math.floor(8999999999999*Math.random())+1e12)}},c=function(t,e){try{if(PerformanceObserver.supportedEntryTypes.includes(t)){if("first-input"===t&&!("PerformanceEventTiming"in self))return;var n=new PerformanceObserver((function(t){return t.getEntries().map(e)}));return n.observe({type:t,buffered:!0}),n}}catch(t){}},f=function(t,e){var n=function n(i){"pagehide"!==i.type&&"hidden"!==document.visibilityState||(t(i),e&&(removeEventListener("visibilitychange",n,!0),removeEventListener("pagehide",n,!0)))};addEventListener("visibilitychange",n,!0),addEventListener("pagehide",n,!0)},s=function(t){addEventListener("pageshow",(function(e){e.persisted&&t(e)}),!0)},m="function"==typeof WeakSet?new WeakSet:new Set,p=function(t,e,n){var i;return function(){e.value>=0&&(n||m.has(e)||"hidden"===document.visibilityState)&&(e.delta=e.value-(i||0),(e.delta||void 0===i)&&(i=e.value,t(e)))}},d=function(t,e){var n,i=u("CLS",0),a=function(t){t.hadRecentInput||(i.value+=t.value,i.entries.push(t),n())},r=c("layout-shift",a);r&&(n=p(t,i,e),f((function(){r.takeRecords().map(a),n()})),s((function(){i=u("CLS",0),n=p(t,i,e)})))},v=-1,l=function(){return"hidden"===document.visibilityState?0:1/0},h=function(){f((function(t){var e=t.timeStamp;v=e}),!0)},g=function(){return v<0&&(v=l(),h(),s((function(){setTimeout((function(){v=l(),h()}),0)}))),{get timeStamp(){return v}}},S=function(t,e){var n,i=g(),a=u("FCP"),r=function(t){"first-contentful-paint"===t.name&&(f&&f.disconnect(),t.startTime<i.timeStamp&&(a.value=t.startTime,a.entries.push(t),m.add(a),n()))},o=performance.getEntriesByName("first-contentful-paint")[0],f=o?null:c("paint",r);(o||f)&&(n=p(t,a,e),o&&r(o),s((function(i){a=u("FCP"),n=p(t,a,e),requestAnimationFrame((function(){requestAnimationFrame((function(){a.value=performance.now()-i.timeStamp,m.add(a),n()}))}))})))},y={passive:!0,capture:!0},w=new Date,E=function(t,e){i||(i=e,a=t,r=new Date,b(removeEventListener),L())},L=function(){if(a>=0&&a<r-w){var t={entryType:"first-input",name:i.type,target:i.target,cancelable:i.cancelable,startTime:i.timeStamp,processingStart:i.timeStamp+a};o.forEach((function(e){e(t)})),o=[]}},T=function(t){if(t.cancelable){var e=(t.timeStamp>1e12?new Date:performance.now())-t.timeStamp;"pointerdown"==t.type?function(t,e){var n=function(){E(t,e),a()},i=function(){a()},a=function(){removeEventListener("pointerup",n,y),removeEventListener("pointercancel",i,y)};addEventListener("pointerup",n,y),addEventListener("pointercancel",i,y)}(e,t):E(e,t)}},b=function(t){["mousedown","keydown","touchstart","pointerdown"].forEach((function(e){return t(e,T,y)}))},F=function(t,e){var n,r=g(),d=u("FID"),v=function(t){t.startTime<r.timeStamp&&(d.value=t.processingStart-t.startTime,d.entries.push(t),m.add(d),n())},l=c("first-input",v);n=p(t,d,e),l&&f((function(){l.takeRecords().map(v),l.disconnect()}),!0),l&&s((function(){var r;d=u("FID"),n=p(t,d,e),o=[],a=-1,i=null,b(addEventListener),r=v,o.push(r),L()}))},k=function(t,e){var n,i=g(),a=u("LCP"),r=function(t){var e=t.startTime;e<i.timeStamp&&(a.value=e,a.entries.push(t)),n()},o=c("largest-contentful-paint",r);if(o){n=p(t,a,e);var d=function(){m.has(a)||(o.takeRecords().map(r),o.disconnect(),m.add(a),n())};["keydown","click"].forEach((function(t){addEventListener(t,d,{once:!0,capture:!0})})),f(d,!0),s((function(i){a=u("LCP"),n=p(t,a,e),requestAnimationFrame((function(){requestAnimationFrame((function(){a.value=performance.now()-i.timeStamp,m.add(a),n()}))}))}))}},C=function(t){var e,n=u("TTFB");e=function(){try{var e=performance.getEntriesByType("navigation")[0]||function(){var t=performance.timing,e={entryType:"navigation",startTime:0};for(var n in t)"navigationStart"!==n&&"toJSON"!==n&&(e[n]=Math.max(t[n]-t.navigationStart,0));return e}();if(n.value=n.delta=e.responseStart,n.value<0)return;n.entries=[e],t(n)}catch(t){}},"complete"===document.readyState?setTimeout(e,0):addEventListener("pageshow",e)}}}]); (this["webpackJsonpwallet-light"]=this["webpackJsonpwallet-light"]||[]).push([[3],{148:function(t,e,n){"use strict";n.r(e),n.d(e,"getCLS",(function(){return d})),n.d(e,"getFCP",(function(){return S})),n.d(e,"getFID",(function(){return F})),n.d(e,"getLCP",(function(){return k})),n.d(e,"getTTFB",(function(){return C}));var i,a,r,o,u=function(t,e){return{name:t,value:void 0===e?-1:e,delta:0,entries:[],id:"v1-".concat(Date.now(),"-").concat(Math.floor(8999999999999*Math.random())+1e12)}},c=function(t,e){try{if(PerformanceObserver.supportedEntryTypes.includes(t)){if("first-input"===t&&!("PerformanceEventTiming"in self))return;var n=new PerformanceObserver((function(t){return t.getEntries().map(e)}));return n.observe({type:t,buffered:!0}),n}}catch(t){}},f=function(t,e){var n=function n(i){"pagehide"!==i.type&&"hidden"!==document.visibilityState||(t(i),e&&(removeEventListener("visibilitychange",n,!0),removeEventListener("pagehide",n,!0)))};addEventListener("visibilitychange",n,!0),addEventListener("pagehide",n,!0)},s=function(t){addEventListener("pageshow",(function(e){e.persisted&&t(e)}),!0)},m="function"==typeof WeakSet?new WeakSet:new Set,p=function(t,e,n){var i;return function(){e.value>=0&&(n||m.has(e)||"hidden"===document.visibilityState)&&(e.delta=e.value-(i||0),(e.delta||void 0===i)&&(i=e.value,t(e)))}},d=function(t,e){var n,i=u("CLS",0),a=function(t){t.hadRecentInput||(i.value+=t.value,i.entries.push(t),n())},r=c("layout-shift",a);r&&(n=p(t,i,e),f((function(){r.takeRecords().map(a),n()})),s((function(){i=u("CLS",0),n=p(t,i,e)})))},v=-1,l=function(){return"hidden"===document.visibilityState?0:1/0},h=function(){f((function(t){var e=t.timeStamp;v=e}),!0)},g=function(){return v<0&&(v=l(),h(),s((function(){setTimeout((function(){v=l(),h()}),0)}))),{get timeStamp(){return v}}},S=function(t,e){var n,i=g(),a=u("FCP"),r=function(t){"first-contentful-paint"===t.name&&(f&&f.disconnect(),t.startTime<i.timeStamp&&(a.value=t.startTime,a.entries.push(t),m.add(a),n()))},o=performance.getEntriesByName("first-contentful-paint")[0],f=o?null:c("paint",r);(o||f)&&(n=p(t,a,e),o&&r(o),s((function(i){a=u("FCP"),n=p(t,a,e),requestAnimationFrame((function(){requestAnimationFrame((function(){a.value=performance.now()-i.timeStamp,m.add(a),n()}))}))})))},y={passive:!0,capture:!0},w=new Date,E=function(t,e){i||(i=e,a=t,r=new Date,b(removeEventListener),L())},L=function(){if(a>=0&&a<r-w){var t={entryType:"first-input",name:i.type,target:i.target,cancelable:i.cancelable,startTime:i.timeStamp,processingStart:i.timeStamp+a};o.forEach((function(e){e(t)})),o=[]}},T=function(t){if(t.cancelable){var e=(t.timeStamp>1e12?new Date:performance.now())-t.timeStamp;"pointerdown"==t.type?function(t,e){var n=function(){E(t,e),a()},i=function(){a()},a=function(){removeEventListener("pointerup",n,y),removeEventListener("pointercancel",i,y)};addEventListener("pointerup",n,y),addEventListener("pointercancel",i,y)}(e,t):E(e,t)}},b=function(t){["mousedown","keydown","touchstart","pointerdown"].forEach((function(e){return t(e,T,y)}))},F=function(t,e){var n,r=g(),d=u("FID"),v=function(t){t.startTime<r.timeStamp&&(d.value=t.processingStart-t.startTime,d.entries.push(t),m.add(d),n())},l=c("first-input",v);n=p(t,d,e),l&&f((function(){l.takeRecords().map(v),l.disconnect()}),!0),l&&s((function(){var r;d=u("FID"),n=p(t,d,e),o=[],a=-1,i=null,b(addEventListener),r=v,o.push(r),L()}))},k=function(t,e){var n,i=g(),a=u("LCP"),r=function(t){var e=t.startTime;e<i.timeStamp&&(a.value=e,a.entries.push(t)),n()},o=c("largest-contentful-paint",r);if(o){n=p(t,a,e);var d=function(){m.has(a)||(o.takeRecords().map(r),o.disconnect(),m.add(a),n())};["keydown","click"].forEach((function(t){addEventListener(t,d,{once:!0,capture:!0})})),f(d,!0),s((function(i){a=u("LCP"),n=p(t,a,e),requestAnimationFrame((function(){requestAnimationFrame((function(){a.value=performance.now()-i.timeStamp,m.add(a),n()}))}))}))}},C=function(t){var e,n=u("TTFB");e=function(){try{var e=performance.getEntriesByType("navigation")[0]||function(){var t=performance.timing,e={entryType:"navigation",startTime:0};for(var n in t)"navigationStart"!==n&&"toJSON"!==n&&(e[n]=Math.max(t[n]-t.navigationStart,0));return e}();if(n.value=n.delta=e.responseStart,n.value<0)return;n.entries=[e],t(n)}catch(t){}},"complete"===document.readyState?setTimeout(e,0):addEventListener("pageshow",e)}}}]);
//# sourceMappingURL=3.chunk.js.map //# sourceMappingURL=3.chunk.js.map
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
!function(e){function t(t){for(var n,a,i=t[0],l=t[1],c=t[2],s=0,p=[];s<i.length;s++)a=i[s],Object.prototype.hasOwnProperty.call(o,a)&&o[a]&&p.push(o[a][0]),o[a]=0;for(n in l)Object.prototype.hasOwnProperty.call(l,n)&&(e[n]=l[n]);for(f&&f(t);p.length;)p.shift()();return u.push.apply(u,c||[]),r()}function r(){for(var e,t=0;t<u.length;t++){for(var r=u[t],n=!0,i=1;i<r.length;i++){var l=r[i];0!==o[l]&&(n=!1)}n&&(u.splice(t--,1),e=a(a.s=r[0]))}return e}var n={},o={1:0},u=[];function a(t){if(n[t])return n[t].exports;var r=n[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,a),r.l=!0,r.exports}a.e=function(e){var t=[],r=o[e];if(0!==r)if(r)t.push(r[2]);else{var n=new Promise((function(t,n){r=o[e]=[t,n]}));t.push(r[2]=n);var u,i=document.createElement("script");i.charset="utf-8",i.timeout=120,a.nc&&i.setAttribute("nonce",a.nc),i.src=function(e){return a.p+"static/js/"+({}[e]||e)+"."+{3:"92ed5aef"}[e]+".chunk.js"}(e);var l=new Error;u=function(t){i.onerror=i.onload=null,clearTimeout(c);var r=o[e];if(0!==r){if(r){var n=t&&("load"===t.type?"missing":t.type),u=t&&t.target&&t.target.src;l.message="Loading chunk "+e+" failed.\n("+n+": "+u+")",l.name="ChunkLoadError",l.type=n,l.request=u,r[1](l)}o[e]=void 0}};var c=setTimeout((function(){u({type:"timeout",target:i})}),12e4);i.onerror=i.onload=u,document.head.appendChild(i)}return Promise.all(t)},a.m=e,a.c=n,a.d=function(e,t,r){a.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},a.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.t=function(e,t){if(1&t&&(e=a(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(a.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)a.d(r,n,function(t){return e[t]}.bind(null,n));return r},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,"a",t),t},a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.p="/",a.oe=function(e){throw console.error(e),e};var i=this["webpackJsonpwallet-light"]=this["webpackJsonpwallet-light"]||[],l=i.push.bind(i);i.push=t,i=i.slice();for(var c=0;c<i.length;c++)t(i[c]);var f=l;r()}([]); !function(e){function t(t){for(var n,i,a=t[0],l=t[1],c=t[2],s=0,p=[];s<a.length;s++)i=a[s],Object.prototype.hasOwnProperty.call(o,i)&&o[i]&&p.push(o[i][0]),o[i]=0;for(n in l)Object.prototype.hasOwnProperty.call(l,n)&&(e[n]=l[n]);for(f&&f(t);p.length;)p.shift()();return u.push.apply(u,c||[]),r()}function r(){for(var e,t=0;t<u.length;t++){for(var r=u[t],n=!0,a=1;a<r.length;a++){var l=r[a];0!==o[l]&&(n=!1)}n&&(u.splice(t--,1),e=i(i.s=r[0]))}return e}var n={},o={1:0},u=[];function i(t){if(n[t])return n[t].exports;var r=n[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,i),r.l=!0,r.exports}i.e=function(e){var t=[],r=o[e];if(0!==r)if(r)t.push(r[2]);else{var n=new Promise((function(t,n){r=o[e]=[t,n]}));t.push(r[2]=n);var u,a=document.createElement("script");a.charset="utf-8",a.timeout=120,i.nc&&a.setAttribute("nonce",i.nc),a.src=function(e){return i.p+"static/js/"+({}[e]||e)+"."+{3:"cd2fbb29"}[e]+".chunk.js"}(e);var l=new Error;u=function(t){a.onerror=a.onload=null,clearTimeout(c);var r=o[e];if(0!==r){if(r){var n=t&&("load"===t.type?"missing":t.type),u=t&&t.target&&t.target.src;l.message="Loading chunk "+e+" failed.\n("+n+": "+u+")",l.name="ChunkLoadError",l.type=n,l.request=u,r[1](l)}o[e]=void 0}};var c=setTimeout((function(){u({type:"timeout",target:a})}),12e4);a.onerror=a.onload=u,document.head.appendChild(a)}return Promise.all(t)},i.m=e,i.c=n,i.d=function(e,t,r){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},i.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(i.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)i.d(r,n,function(t){return e[t]}.bind(null,n));return r},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/",i.oe=function(e){throw console.error(e),e};var a=this["webpackJsonpwallet-light"]=this["webpackJsonpwallet-light"]||[],l=a.push.bind(a);a.push=t,a=a.slice();for(var c=0;c<a.length;c++)t(a[c]);var f=l;r()}([]);
//# sourceMappingURL=runtime-main.js.map //# sourceMappingURL=runtime-main.js.map
\ No newline at end of file
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<br> <br>
<a href="#"><img src="https://github.com/millix/millix-wallet/blob/master/app/icon.png?raw=true" alt="millix node" width="200"></a> <a href="#"><img src="https://github.com/millix/millix-wallet/blob/master/app/icon.png?raw=true" alt="millix node" width="200"></a>
<br> <br>
millix node <small>v1.11.0</small> millix node <small>v1.11.1</small>
<br> <br>
</h1> </h1>
......
...@@ -5,7 +5,7 @@ import Endpoint from '../endpoint'; ...@@ -5,7 +5,7 @@ import Endpoint from '../endpoint';
/** /**
* api list_config_public * api list_config_public
*/ */
class _CZOTAF5LfusB1Ht5 extends Endpoint { class _hXwPQrVhLEALFsIJ extends Endpoint {
constructor() { constructor() {
super('hXwPQrVhLEALFsIJ'); super('hXwPQrVhLEALFsIJ');
this.publicConfigNameList = new Set([ this.publicConfigNameList = new Set([
...@@ -51,4 +51,4 @@ class _CZOTAF5LfusB1Ht5 extends Endpoint { ...@@ -51,4 +51,4 @@ class _CZOTAF5LfusB1Ht5 extends Endpoint {
} }
export default new _CZOTAF5LfusB1Ht5(); export default new _hXwPQrVhLEALFsIJ();
...@@ -774,8 +774,8 @@ export const NETWORK_SHORT_TIME_WAIT_MAX = 1500; ...@@ -774,8 +774,8 @@ export const NETWORK_SHORT_TIME_WAIT_MAX = 1500;
export const DATABASE_ENGINE = 'sqlite'; export const DATABASE_ENGINE = 'sqlite';
export const DATABASE_CONNECTION = {}; export const DATABASE_CONNECTION = {};
export const MILLIX_CIRCULATION = 9e15; export const MILLIX_CIRCULATION = 9e15;
export const NODE_MILLIX_BUILD_DATE = 1625493862; export const NODE_MILLIX_BUILD_DATE = 1626431731;
export const NODE_MILLIX_VERSION = '1.11.0-tangled'; export const NODE_MILLIX_VERSION = '1.11.1-tangled';
export const DATA_BASE_DIR_MAIN_NETWORK = './millix-tangled'; export const DATA_BASE_DIR_MAIN_NETWORK = './millix-tangled';
export const DATA_BASE_DIR_TEST_NETWORK = './millix-tangled'; export const DATA_BASE_DIR_TEST_NETWORK = './millix-tangled';
let DATA_BASE_DIR = MODE_TEST_NETWORK ? DATA_BASE_DIR_TEST_NETWORK : DATA_BASE_DIR_MAIN_NETWORK; let DATA_BASE_DIR = MODE_TEST_NETWORK ? DATA_BASE_DIR_TEST_NETWORK : DATA_BASE_DIR_MAIN_NETWORK;
......
...@@ -6,6 +6,7 @@ import peerRotation from '../../net/peer-rotation'; ...@@ -6,6 +6,7 @@ import peerRotation from '../../net/peer-rotation';
import jobEngine from '../../job/job-engine'; import jobEngine from '../../job/job-engine';
import console from '../console'; import console from '../console';
import logManager from '../log-manager'; import logManager from '../log-manager';
import database from '../../database/database';
class Service { class Service {
...@@ -15,7 +16,10 @@ class Service { ...@@ -15,7 +16,10 @@ class Service {
} }
initialize(options = {}) { initialize(options = {}) {
const {mode, initialize_wallet_event: initializeWalletEvent} = options; const {
mode,
initialize_wallet_event: initializeWalletEvent
} = options;
if (this.initialized) { if (this.initialized) {
return Promise.resolve(); return Promise.resolve();
} }
...@@ -35,6 +39,7 @@ class Service { ...@@ -35,6 +39,7 @@ class Service {
.then(() => peerRotation.initialize()) .then(() => peerRotation.initialize())
.then(() => jobEngine.initialize()) .then(() => jobEngine.initialize())
.then(() => wallet._doUpdateNodeAttribute()) .then(() => wallet._doUpdateNodeAttribute())
.then(() => database.checkup())
.catch(e => { .catch(e => {
console.log(`[services] ${e.message}`); console.log(`[services] ${e.message}`);
this.initialized = false; this.initialized = false;
......
...@@ -105,8 +105,8 @@ export class WalletSync { ...@@ -105,8 +105,8 @@ export class WalletSync {
if (!job.transaction_output_id) { if (!job.transaction_output_id) {
return callback(); return callback();
} }
let [transactionID, shardID, outputPosition] = job.transaction_output_id.split('_'); let [transactionID, outputShardID, outputPosition] = job.transaction_output_id.split('_');
if (transactionID === undefined || shardID === undefined || outputPosition === undefined) { if (transactionID === undefined || outputShardID === undefined || outputPosition === undefined) {
return callback(); //something was wrong skip this output. return callback(); //something was wrong skip this output.
} }
...@@ -119,10 +119,10 @@ export class WalletSync { ...@@ -119,10 +119,10 @@ export class WalletSync {
} }
database.applyShards(shardID => { database.applyShards(shardID => {
const transactionRepository = database.getRepository('transaction'); const transactionRepository = database.getRepository('transaction', shardID);
return transactionRepository.listTransactionInput({ return transactionRepository.listTransactionInput({
output_transaction_id: transactionID, output_transaction_id: transactionID,
output_shard_id : shardID, output_shard_id : outputShardID,
output_position : outputPosition output_position : outputPosition
}).then(inputList => { }).then(inputList => {
const spendingInputs = []; const spendingInputs = [];
...@@ -152,7 +152,7 @@ export class WalletSync { ...@@ -152,7 +152,7 @@ export class WalletSync {
}).then(spendingTransactionList => { }).then(spendingTransactionList => {
// skip if we already know that the tx is spent // skip if we already know that the tx is spent
if (spendingTransactionList.length > 0) { if (spendingTransactionList.length > 0) {
return database.applyShardZeroAndShardRepository('transaction', shardID, transactionRepository => { return database.applyShardZeroAndShardRepository('transaction', outputShardID, transactionRepository => {
return transactionRepository.updateTransactionOutput(transactionID, outputPosition, _.min(_.map(spendingTransactionList, spendingInput => spendingInput.transaction_date))); return transactionRepository.updateTransactionOutput(transactionID, outputPosition, _.min(_.map(spendingTransactionList, spendingInput => spendingInput.transaction_date)));
}).then(() => { }).then(() => {
callback(); callback();
...@@ -238,7 +238,10 @@ export class WalletSync { ...@@ -238,7 +238,10 @@ export class WalletSync {
return; return;
} }
const {ws, timestamp} = peerSyncInfo; const {
ws,
timestamp
} = peerSyncInfo;
if (ws.readyState !== ws.OPEN) { if (ws.readyState !== ws.OPEN) {
return; return;
} }
...@@ -284,9 +287,12 @@ export class WalletSync { ...@@ -284,9 +287,12 @@ export class WalletSync {
add(transactionID, options) { add(transactionID, options) {
this.unresolvedTransactionQueue._store.getTask('transaction_' + transactionID, (err, unresolvedTransaction) => { this.unresolvedTransactionQueue._store.getTask('transaction_' + transactionID, (err, unresolvedTransaction) => {
const {delay, priority} = options || {}; const {
const attempt = options && options.attempt ? options.attempt + 1 : 1; delay,
const timestamp = options && options.timestamp ? options.timestamp : Date.now(); priority
} = options || {};
const attempt = options && options.attempt ? options.attempt + 1 : 1;
const timestamp = options && options.timestamp ? options.timestamp : Date.now();
if (unresolvedTransaction && (!unresolvedTransaction.data.transaction_sync_rejected || !(priority > 0 && attempt < config.TRANSACTION_RETRY_SYNC_MAX))) { if (unresolvedTransaction && (!unresolvedTransaction.data.transaction_sync_rejected || !(priority > 0 && attempt < config.TRANSACTION_RETRY_SYNC_MAX))) {
return; return;
...@@ -452,15 +458,18 @@ export class WalletSync { ...@@ -452,15 +458,18 @@ export class WalletSync {
// spend sync // spend sync
const transactionRepository = database.getRepository('transaction', shardID); const transactionRepository = database.getRepository('transaction', shardID);
return transactionRepository.listTransactionOutput({ return transactionRepository.listTransactionOutput({
is_spent : 0, is_spent : 0,
address_key_identifier: wallet.getKeyIdentifier() is_double_spend : 0,
address_key_identifier : wallet.getKeyIdentifier(),
'`transaction`.status!': 3
}, 'transaction_date') }, 'transaction_date')
.then(transactionOutputList => { .then(transactionOutputList => {
transactionOutputList.forEach(transactionOutput => { transactionOutputList.forEach(transactionOutput => {
const transactionOutputID = `${transactionOutput.transaction_id}_${transactionOutput.shard_id}_${transactionOutput.output_position}`; const transactionOutputID = `${transactionOutput.transaction_id}_${transactionOutput.shard_id}_${transactionOutput.output_position}`;
if (!queuedTransactionOutputs.has(transactionOutputID)) { if (!queuedTransactionOutputs.has(transactionOutputID)) {
this.transactionSpendQueue.push({ this.transactionSpendQueue.push({
transaction_output_id: transactionOutputID transaction_output_id: transactionOutputID,
priority : 1
}); });
} }
}); });
......
...@@ -66,7 +66,7 @@ export class Database { ...@@ -66,7 +66,7 @@ export class Database {
sql += `${key.substring(0, key.lastIndexOf('_'))} <= ?`; sql += `${key.substring(0, key.lastIndexOf('_'))} <= ?`;
} }
else { else {
sql += `${key} = ?`; sql += `${key}= ?`;
} }
parameters.push(where[key]); parameters.push(where[key]);
...@@ -648,6 +648,19 @@ export class Database { ...@@ -648,6 +648,19 @@ export class Database {
], () => resolve()); ], () => resolve());
}); });
} }
checkup() {
return new Promise(resolve => {
async.eachSeries(_.keys(this.repositories), (repositoryName, callback) => {
if (this.repositories[repositoryName].checkup) {
this.repositories[repositoryName].checkup().then(() => callback());
}
else {
callback();
}
}, () => resolve());
});
}
} }
......
...@@ -107,7 +107,10 @@ export default class Node { ...@@ -107,7 +107,10 @@ export default class Node {
listNodeAttribute(where, orderBy, limit) { listNodeAttribute(where, orderBy, limit) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
let {sql, parameters} = Database.buildQuery('SELECT nat.attribute_type, node_attribute.* FROM node_attribute INNER JOIN node_attribute_type AS nat ON node_attribute.attribute_type_id = nat.attribute_type_id', where, orderBy, limit); let {
sql,
parameters
} = Database.buildQuery('SELECT nat.attribute_type, node_attribute.* FROM node_attribute INNER JOIN node_attribute_type AS nat ON node_attribute.attribute_type_id = nat.attribute_type_id', where, orderBy, limit);
this.database.all(sql, parameters, (err, rows) => { this.database.all(sql, parameters, (err, rows) => {
if (err) { if (err) {
return reject(err); return reject(err);
...@@ -126,7 +129,10 @@ export default class Node { ...@@ -126,7 +129,10 @@ export default class Node {
listNodes(where, orderBy, limit) { listNodes(where, orderBy, limit) {
return new Promise(resolve => { return new Promise(resolve => {
let {sql, parameters} = Database.buildQuery('SELECT * FROM node', where, orderBy, limit); let {
sql,
parameters
} = Database.buildQuery('SELECT * FROM node', where, orderBy, limit);
this.database.all(sql, parameters, (err, rows) => { this.database.all(sql, parameters, (err, rows) => {
resolve(rows); resolve(rows);
}); });
...@@ -135,7 +141,10 @@ export default class Node { ...@@ -135,7 +141,10 @@ export default class Node {
getNode(where) { getNode(where) {
return new Promise(resolve => { return new Promise(resolve => {
let {sql, parameters} = Database.buildQuery('SELECT * FROM node', where); let {
sql,
parameters
} = Database.buildQuery('SELECT * FROM node', where);
this.database.get(sql, parameters, (err, row) => { this.database.get(sql, parameters, (err, row) => {
resolve(row); resolve(row);
}); });
...@@ -172,15 +181,18 @@ export default class Node { ...@@ -172,15 +181,18 @@ export default class Node {
return reject(err.message); return reject(err.message);
} }
else { else {
const set = _.pick(node, [ const set = _.pick(node, [
'status', 'status',
'node_prefix', 'node_prefix',
'node_address', 'node_address',
'node_port', 'node_port',
'node_api_port' 'node_api_port'
]); ]);
set['update_date'] = Math.floor(ntp.now().getTime() / 1000); set['update_date'] = Math.floor(ntp.now().getTime() / 1000);
const {sql, parameters} = Database.buildUpdate('UPDATE node', set, {node_id: node.node_id}); const {
sql,
parameters
} = Database.buildUpdate('UPDATE node', set, {node_id: node.node_id});
this.database.run(sql, parameters, err => { this.database.run(sql, parameters, err => {
console.log(`[database] update node ${url} with id ${node.node_id}`); console.log(`[database] update node ${url} with id ${node.node_id}`);
return err ? reject() : resolve(); return err ? reject() : resolve();
...@@ -195,15 +207,18 @@ export default class Node { ...@@ -195,15 +207,18 @@ export default class Node {
updateNode(node) { updateNode(node) {
return new Promise(resolve => { return new Promise(resolve => {
const set = _.pick(node, [ const set = _.pick(node, [
'status', 'status',
'node_prefix', 'node_prefix',
'node_address', 'node_address',
'node_port', 'node_port',
'node_api_port' 'node_api_port'
]); ]);
set['update_date'] = Math.floor(ntp.now().getTime() / 1000); set['update_date'] = Math.floor(ntp.now().getTime() / 1000);
const {sql, parameters} = Database.buildUpdate('UPDATE node', set, {node_id: node.node_id}); const {
sql,
parameters
} = Database.buildUpdate('UPDATE node', set, {node_id: node.node_id});
this.database.run(sql, parameters, () => { this.database.run(sql, parameters, () => {
return resolve(); return resolve();
}); });
...@@ -230,4 +245,14 @@ export default class Node { ...@@ -230,4 +245,14 @@ export default class Node {
}); });
} }
checkup() {
return new Promise(resolve => {
this.database.run('DELETE FROM node_attribute WHERE attribute_type_id NOT IN (SELECT attribute_type_id FROM node_attribute_type)', (err) => {
if (err) {
console.log(err);
}
resolve();
});
});
}
} }
...@@ -108,4 +108,4 @@ db.initialize() ...@@ -108,4 +108,4 @@ db.initialize()
}); });
} }
}); });
//millix v1.11.0-tangled //millix v1.11.1-tangled
...@@ -377,7 +377,7 @@ CREATE TABLE normalization ...@@ -377,7 +377,7 @@ CREATE TABLE normalization
); );
CREATE INDEX idx_normalization_create_date ON normalization (create_date); CREATE INDEX idx_normalization_create_date ON normalization (create_date);
INSERT INTO schema_information (key, value) VALUES ("version", "12"); INSERT INTO schema_information (key, value) VALUES ("version", "14");
INSERT INTO address_version(version, is_main_network, is_default, regex_pattern) INSERT INTO address_version(version, is_main_network, is_default, regex_pattern)
VALUES ("0a0", 1, 1, "(?<address>.*)(?<version>0a0)(?<identifier>.*)"), VALUES ("0a0", 1, 1, "(?<address>.*)(?<version>0a0)(?<identifier>.*)"),
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment