Forráskód Böngészése

Enable fusion management in middleware.

Shomari 1 hónapja
szülő
commit
90ed7f97bc

+ 31 - 0
web/components/Readme/Mineable.vue

@@ -0,0 +1,31 @@
+<script setup lang="ts">
+/* Define properties. */
+// https://vuejs.org/guide/components/props.html#props-declaration
+const props = defineProps({
+    data: {
+        type: [Object],
+    },
+})
+
+// onMounted(() => {
+//     console.log('Mounted!')
+//     // Now it's safe to perform setup operations.
+// })
+
+// onBeforeUnmount(() => {
+//     console.log('Before Unmount!')
+//     // Now is the time to perform all cleanup operations.
+// })
+</script>
+
+<template>
+    <main class="flex flex-col gap-5">
+        <h2 class="text-3xl font-bold text-fuchsia-700">
+            Mineable $HUSH
+        </h2>
+
+        <p>
+            At least <span class="text-lg font-bold"><span class="text-xl text-rose-500">50%</span> of the Total Supply of $HUSH</span> will be available for PoW token mining (or melted).
+        </p>
+    </main>
+</template>

+ 2 - 0
web/components/Readme/Toc.vue

@@ -40,6 +40,8 @@ const props = defineProps({
             <li>CoinJoins: à la CashFusion</li>
             <li>Flux Cloud</li>
             <li>Counterparty and Protocol Discovery (CAPD)</li>
+            <li>Ephemeral Database: ZERO Logs</li>
+            <li>Mineable $HUSH</li>
         </ol>
     </main>
 </template>

+ 77 - 0
web/handlers/initFusions.ts

@@ -0,0 +1,77 @@
+/* Initialize globals. */
+let fusionsDb
+
+const setupGlobalDb = async (_fusionsDb) => {
+    fusionsDb = _fusionsDb
+
+    fusionsDb['4e9654f9-3de9-4f9a-8169-3834f40847f5'] = {
+        tierid: 270000,
+        guests: 5,
+        inputs: 0,
+        outputs: 0,
+        createdAt: 1723245503,
+        updatedAt: 1723245503,
+    }
+
+    fusionsDb['6f765750-2267-4601-87be-80a416143a28'] = {
+        tierid: 820000,
+        guests: 20,
+        inputs: 36,
+        outputs: 68,
+        createdAt: 1723245503,
+        updatedAt: 1723245503,
+        completedAt: 1723245503,
+        txid: '12285e89b8aed041372f8fdfa2a057b41f37ea4fa4b4757f3c9cb3ac86623ddd',
+    }
+
+    fusionsDb['4eff6293-60e9-4a5a-83de-4b91da1f7de4'] = {
+        tierid: 1800000,
+        guests: 22,
+        inputs: 51,
+        outputs: 181,
+        createdAt: 1723245818,
+        updatedAt: 1723245818,
+        complatedAt: 1723245818,
+        txid: 'e05a9d2dd56f7e7c0158e176131d43bbfc39ea7a8855c6913ddb08e851439c60',
+    }
+}
+
+const init = async () => {
+    setTimeout(() => {
+        console.log('ADD ONE MORE', fusionsDb)
+        fusionsDb['af371828-7199-4e4e-baca-bcd11d01edda'] = {
+            tierid: 5600000,
+            guests: 2,
+            inputs: 0,
+            outputs: 0,
+            createdAt: 1723245503,
+            updatedAt: 1723245503,
+        }
+
+    }, 10000)
+}
+
+/**
+ * Initialize Fusions
+ */
+export default async (_fusionsDb) => {
+    setupGlobalDb(_fusionsDb)
+    init()
+
+    // if (typeof fusionsDb === 'undefined') {
+    //     /* Setup (global) Fusions database. */
+    //     // NOTE: THIS SETUP REQUIRES LOADING `_fusions` ENDPOINT.
+    //     fusionsDb = Db.fusions
+    //     console.info('Setting up (global) Fusions database...', fusionsDb)
+
+    //     /* Run initialization. */
+    //     await init()
+
+    //     /* Complete (global) DB setup. */
+    //     await setupGlobalDb()
+
+    //     // console.log('Setup complete!', fusionsDb)
+    // }
+
+
+}

+ 2 - 0
web/pages/readme.vue

@@ -233,5 +233,7 @@ FUNCTION : Tokenized Assets + Smart Contracts
 
         <ReadmeEphemeralDb />
 
+        <ReadmeMineable />
+
     </main>
 </template>

+ 21 - 10
web/server/middleware/db.ts

@@ -1,16 +1,18 @@
 /* Import modules. */
 import moment from 'moment'
 
+import initFusions from '../../handlers/initFusions.ts'
+
 console.info('Initializing Ephemeral Database Manager...')
 
 /* Initialize locals. */
+let response
 let status
 
 /* Initialize DB handlers. */
 let fusionsDb
 let profilesDb
-let response
-let sessionsDb
+// let sessionsDb
 let systemDb
 
 /**
@@ -32,7 +34,7 @@ profilesDb = {}
  *
  * An collection of sessions.
  */
-sessionsDb = {}
+// sessionsDb = {}
 
 /**
  * System Datastore
@@ -41,6 +43,9 @@ sessionsDb = {}
  */
 systemDb = {}
 
+/**
+ * Put (Data)
+ */
 const put = async (_dbname, _key, _value) => {
     try {
         switch(_dbname) {
@@ -50,9 +55,9 @@ const put = async (_dbname, _key, _value) => {
         case 'profiles':
             profilesDb[_key] = _value
             break
-        case 'sessions':
-            sessionsDb[_key] = _value
-            break
+        // case 'sessions':
+        //     sessionsDb[_key] = _value
+        //     break
         case 'system':
             systemDb[_key] = _value
             break
@@ -66,7 +71,10 @@ const put = async (_dbname, _key, _value) => {
     return `[ ${_dbname} ] data saved successfully!`
 }
 
-;(async () => {
+/**
+ * Initialize
+ */
+const init = async () => {
     /* Validate (initial) data. */
     if (Object.keys(systemDb).length === 0) {
         status = {
@@ -91,16 +99,19 @@ const put = async (_dbname, _key, _value) => {
     }
 
     // console.log('SYSTEM (DB) STATUS', systemDb.status)
-})()
+}
+
+init()
+initFusions(fusionsDb)
 
 export default defineEventHandler((event) => {
-    console.log('Ephemeral Db Request: ' + getRequestURL(event))
+    // console.log('Ephemeral Db Request: ' + getRequestURL(event))
 
     event.context.Db = {
         /* Getters */
         fusions: fusionsDb,
         profiles: profilesDb,
-        sessions: sessionsDb,
+        // sessions: sessionsDb,
         system: systemDb,
 
         /* Setters */

+ 18 - 0
web/server/routes/_fusions.get.ts

@@ -0,0 +1,18 @@
+/* Initialize globals. */
+let fusionsDb
+
+export default defineEventHandler(async (event) => {
+    /* Set database. */
+    const Db = event.context.Db
+    // console.log('DB', Db)
+
+    /* Setup (global) Fusions database. */
+    // NOTE: THIS SETUP REQUIRES LOADING `_fusions` ENDPOINT.
+    fusionsDb = Db.fusions
+    // console.info('Setting up (global) Fusions database...')
+
+    // TODO Filter any "extra" details (to save bandwidth).
+
+    /* Return fusions list. */
+    return fusionsDb
+})

+ 18 - 2
web/server/routes/v1/[...body].post.ts → web/server/routes/v1.post.ts

@@ -9,11 +9,11 @@ export default defineEventHandler(async (event) => {
 
     /* Set database. */
     const Db = event.context.Db
-    console.log('DB', Db)
+    // console.log('DB', Db)
 
     /* Set (request) body. */
     const body = await readBody(event)
-    console.log('BODY', body)
+    // console.log('BODY', body)
 
     if (!body) {
         return `Authorization FAILED!`
@@ -21,6 +21,11 @@ export default defineEventHandler(async (event) => {
 
     /* Set profile parameters. */
     const authid = body.authid
+    console.log('AUTH ID', authid)
+    const actionid = body.actionid
+    console.log('ACTION ID', actionid)
+    const sessionid = body.sessionid
+    console.log('SESSION ID', sessionid)
 
     console.log({
         authid,
@@ -63,6 +68,17 @@ export default defineEventHandler(async (event) => {
         /* Request session. */
         response = await Db.put('profiles', authid, profile)
         console.log('UPDATE PROFILE', response)
+
+console.log('DEBUG::INSERTING A NEW FUSION')
+const fusion = {
+    tierid: 680000,
+    guests: 12,
+    inputs: 111,
+    outputs: 195,
+    createdAt: 1723245503,
+    updatedAt: 1723245503,
+}
+await Db.put('fusions', 'b2eedc48-52d1-4056-b441-c3c802c053a3', fusion)
     }
 
     /* Return profile. */

+ 0 - 0
web/server/routes/v1/session/[sessionid].get.ts → web/server/routes/v1/fusion/[fusionid].get.ts


+ 5 - 1
web/tsconfig.json

@@ -1,4 +1,8 @@
 {
   // https://nuxt.com/docs/guide/concepts/typescript
-  "extends": "./.nuxt/tsconfig.json"
+  "extends": "./.nuxt/tsconfig.json",
+  "compilerOptions": {
+    "allowImportingTsExtensions": true,
+    "moduleResolution": "bundler"
+  }
 }