Code Monkey home page Code Monkey logo

evernode-sdk's People

Contributors

chalith avatar du1ana avatar kasunkavinda avatar kithminisg avatar ravinsp avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

evernode-sdk's Issues

Secret key does not match xahua address

I made the mistake of doing a fresh install on a node. Security key is now different. I have the NFT still in the original wallet from first install. Can this be fixed? Thanks.

Handling errors w/ HotPocket

Application used: hpdevkit, nodejs library

In some cases when an error hasn't being caught/handled properly, the contract execution doesn't stop after a period of time and the node just freezes unless it gets reset by the operator.

I'd suggest that HotPocket should have a configurable time limit for contract execution. If the developer set this time limit to 10 minutes, the maximum amount of time a contract execution has is 10 minutes. If the delta between the time when the contract was invoked and the current time is 10 minutes, HotPocket would automatically stop the process and no output or changes should be taken into account.

For example:
image

While developers may use a try-catch() block to handle errors, some errors may be unbeknownst to them.

Additionally, it would be convenient for developers if there was a log file for HotPocket for debugging purposes.

help on clean and rebuild when i break stuff

Tried running the hpdevkit clean command but seems the local instance still has something ive deployed broken in it.
Been following along with the how to tut so far, really having a blast!

Thank you team Evernode.

Lathans-iMac:mycontract lathan$ hpdevkit clean
command: clean (cluster: default)
sub-command: stop
hpdevkit_default_node_2
hpdevkit_default_node_3
hpdevkit_default_node_1
sub-command: destroy
hpdevkit_default_node_2
hpdevkit_default_node_3
hpdevkit_default_node_1
hpdevkit_default_vol
hpdevkit_default_net
Lathans-iMac:mycontract lathan$ export HP_CLUSTER_SIZE=5
Lathans-iMac:mycontract lathan$ npm start

> [email protected] start
> npm run build && hpdevkit deploy dist


> [email protected] build
> npx ncc build src/mycontract.js -o dist

ncc: Version 0.34.0
ncc: Compiling file index.js into CJS
21kB  dist/index.js
21kB  [346ms] - ncc 0.34.0
command: deploy (cluster: default)

Initializing deployment cluster
sub-command: stop
Cluster 'default' does not exist.
sub-command: create
Creating 'default' cluster of size 5
hpdevkit_default_vol
22a117ba18e0c6ca977bd68f2d97be63e454a36e71163e55e0b1df9ac2b8bda4
Contract directory created at /hpdevkit_vol/node5
hpcore exited normally.
Contract directory created at /hpdevkit_vol/node3
hpcore exited normally.
6c855640dd272ea19362b4e338e4d825eb3440fc6c5d35992d11ad824d236dda
0958f6a8cfd512a23c6cc21d1b6e4f5cec07613f587220016f2fd4a58072d64a
Contract directory created at /hpdevkit_vol/node2
hpcore exited normally.
cdaf2ed6387c696b9b2e97e9d0b3742d9dfbdfb2d93c1a7d487eb97e463f35a5
Contract directory created at /hpdevkit_vol/node1
hpcore exited normally.
Contract directory created at /hpdevkit_vol/node4
hpcore exited normally.
3cd461cbb6f7855e8c5d379a05753d0ba66456c2fbc1b6b4b84c07194e637310
a65bbf4dd6a2184d498c92bddc1bebb8c83d96b2a83c6e4b7b7d08b4a274ad8a
9752174975ccb76eb168b2fee643d1c5cca734fc135326acb1dbf7e749cddbbd
sub-command: bindmesh
sub-command: stop
hpdevkit_default_node_3
hpdevkit_default_node_5
hpdevkit_default_node_4
hpdevkit_default_node_2
hpdevkit_default_node_1
sub-command: sync
Applying hp.cfg overrides
Applying hp.cfg overrides
Applying hp.cfg overrides
Applying hp.cfg overrides
Applying hp.cfg overrides
sub-command: start
hpdevkit_default_node_3
hpdevkit_default_node_2
hpdevkit_default_node_4
hpdevkit_default_node_1
hpdevkit_default_node_5
Streaming logs of node 1:
sub-command: logs
20221002 00:59:42.044 [inf][hpc] Public key: ed68be2b3ced3d730304d078100da2e9ea3f563f6e99a167bcf6841df56bf92895
20221002 00:59:42.044 [inf][hpc] Contract: 163a0200-e11b-4fe1-9fcc-bf92da1300b1 (1.0)
20221002 00:59:42.071 [err][hpc] 2: Error in checking hpfs status at mount /hpdevkit_vol/node1/contract_fs/mnt.
20221002 00:59:42.072 [err][hpc] Couldn't initialize hpfs process at mount /hpdevkit_vol/node1/contract_fs/mnt.
20221002 00:59:42.074 [err][hpc] Contract file system initialization failed.

evdevkit - replace `ip` field with `domain`

If you run evdevkit list, it'll showcase you a list of all the hosts on the registry. It works but the ip field is left blank, I suppose this need to be replaced with the hosts' account domain field

Multiple contracts

Question I see the contract is deployed to x instances and all contracts react to in coming messages.

How would one have one contracts execute not all of them?

I assume I need to have the contracts comunícate with each other then maintain a queue between them. Then have one pull and lock the task to execute from that queue?

Not sure if there is something you could point me to possibly to look at?

`Cluster 'default' already exists` issue

image

Steps to reproduce

  1. cd mycontract/src
  2. npm start
    When it's about to create the nodes' image, do:
  3. Ctrl+C, to cancel it out and immediately run:
  4. hpdevkit clean

This is what I did to encounter this issue.

UNL protocol ideas

I have a concern regarding HotPocket dApps that act as layer-2 smart contracts for payment networks like the XRP Ledger but I need to be sure that my understanding is correct 😄 :

If a person gets hold of the application's filesystem, source code, configurations and its nodes' IP address, could they partake in the app's network as a node?

Let's ignore any third party code on the app's source code that mitigates this problem, is this possible?

Add multisig signing function on all hotpocket libraries

Overview

As of now, there's no native function on any library for an Instance to sign a Multisig transaction on behalf of an application.

An Instance on an Evernode Host should be able to sign a MultiSig transaction on the application's XRPL account. There should be strict security checks & verification to only sign transactions that are affecting the application's XRPL account. So it shouldn't and wouldn't be possible for a contract to exploit this function and dry the funds on an Evernode Host's XRPL account.

Sign(MultiSigTx) -> HotPocket -> Sashimono -> Checks -> Sashimono signs -> HotPocket returns `MultiSigTx` w/ signature

All the reliable nodes would sign, if the checks are valid & complete.

HotPocket should notify Sashimono about the request to sign a MultiSig tx on behalf of the application's XRPL account. Here are the foundational checks that should be done by Sashimono:

  1. Check if the transaction blob is a MultiSig tx
  2. Check if the multisig tx is on behalf of the application's XRPL account
  3. Check if the MultiSig tx would be valid on the XRPL (optional)

Other checks such as application-set rules should be enforced on an if-else statement on the contract's code.

Should this be a native function?

Yes, without it: It wouldn't be possible to set an application on Evernode in a decentralized environment since the contract itself isn't able to request for the Host's signature for a multisig transaction on behalf of the application's XRPL account.

So there wouldn't be any other solutions that are a reliable & secure loophole. This function should exist before Evernode is deployed onto the mainnet. I've tried to make up a loophole for this and it's insecure and unreliable but it works.

Are all contacts public?

If I am looking to build a contract that I would like to charge a fee for someone to use. How would I keep the contact code private? Is this achievable here?

Evernode SDK announcements

We'll post updates about Evernode SDK here. Please subscribe to this if you want to receive notifications.

hpdevkit clean doesn't remove the `hpdevkit_default_net`

If I go into the docker dashboard and clean everything I get this error when running npm start:

Cluster 'default' already exists.

If I do hpdevkit clean it does not remove the default network. I have to run docker network prune to remove the network.

contract dashboard ~ feature request

Now that ive finally been able to deploy one up into the new work and have it run. The contract started and I was able to communicate with it from a few clients and also tested connecting to it from 2 of the three hosts in my cluster.

But then after a while, the wss socket died and the clients are unable to connect back to it.

I checked the wallet balance it still has EVR's.
Screen Shot 2023-06-06 at 21 41 08

  1. how can i validate if a contract is running on the network? is there a command to check contract ID is active?
  2. would really like to see a dashboard where I could possibly see some stats or maybe as the contract owner even some debug of the console.log's this should be possible as we generate keypair.

here is the contract ID i deployed: '88a83d6a-2989-46fa-a2c3-056c23da7370'

Would really love to see 1 a command line tool and if possible something in the dashboard as well.
To validate contract is deployed, host has been acquired, and finally contract is still active or not.

contracts and hosts killing nodes

I thought of something to night and I have not seen this covered any where. If i write a contract and deploy it, the dev has very little control over what one has deployed of that contract and that is by design from the interaction I have had via issue queues.

My question is around, if I write a contract eg. my multisig price oracle. Nothing in the boiler plate / example code covers, what happens when many nodes have either cancelled or somehow the instance has failed.

eg. I deploy contract to 10 nodes. 2 fail, 4 are rejected as "spam" or what ever and stop the node running the contract. My contract will fail... and now updating replacing this code is non trvial in the current setup see comments #54 (comment).

There is no way to respool another instance auto magically. To keep you contract running.

If I was after a contract thats "always up". If some random host has rejected my contract or shut down. I would like some algorithmic / automatic way of replacing that instance.

`node-lmdb` error invalid ELF header

I wanted to try to use lmdb however I have run into an issue.

The error I receive is:

node:internal/modules/cjs/loader:1185
  return process.dlopen(module, path.toNamespacedPath(filename));
                 ^

Error: /hpdevkit_vol/node1/contract_fs/mnt/rw/state/prebuilds/darwin-x64/node.abi93.node: invalid ELF header
    at Object.Module._extensions..node (node:internal/modules/cjs/loader:1185:18)
    at Module.load (node:internal/modules/cjs/loader:981:32)
    at Function.Module._load (node:internal/modules/cjs/loader:822:12)
    at Module.require (node:internal/modules/cjs/loader:1005:19)
    at require (node:internal/modules/cjs/helpers:102:18)
    at Object.31 (/hpdevkit_vol/node1/contract_fs/mnt/rw/state/index.js:615:18)
    at __nccwpck_require__ (/hpdevkit_vol/node1/contract_fs/mnt/rw/state/index.js:790:42)
    at Object.878 (/hpdevkit_vol/node1/contract_fs/mnt/rw/state/index.js:628:14)
    at __nccwpck_require__ (/hpdevkit_vol/node1/contract_fs/mnt/rw/state/index.js:790:42)
    at /hpdevkit_vol/node1/contract_fs/mnt/rw/state/index.js:839:23 {
  code: 'ERR_DLOPEN_FAILED'
}

Any suggestions? I also tried using this lmdb but received this error when building:

Error: Module build failed (from ./node_modules/@vercel/ncc/dist/ncc/loaders/shebang-loader.js):
UnhandledSchemeError: Reading from "bun:ffi" is not handled by plugins (Unhandled scheme).
Webpack supports "data:" and "file:" URIs by default.
You may need an additional plugin to handle "bun:" URIs.
    at /Users/denisangell/projects/transia-rnd/evernode/daocontract/node_modules/@vercel/ncc/dist/ncc/index.js.cache.js:37:461251
    at Hook.eval [as callAsync] (eval at create (/Users/denisangell/projects/transia-rnd/evernode/daocontract/node_modules/@vercel/ncc/dist/ncc/index.js.cache.js:20:75523), <anonymous>:6:1)
    at Hook.CALL_ASYNC_DELEGATE [as _callAsync] (/Users/denisangell/projects/transia-rnd/evernode/daocontract/node_modules/@vercel/ncc/dist/ncc/index.js.cache.js:20:72685)
    at Object.processResource (/Users/denisangell/projects/transia-rnd/evernode/daocontract/node_modules/@vercel/ncc/dist/ncc/index.js.cache.js:37:461176)
    at processResource (/Users/denisangell/projects/transia-rnd/evernode/daocontract/node_modules/@vercel/ncc/dist/ncc/index.js.cache.js:1:612888)
    at iteratePitchingLoaders (/Users/denisangell/projects/transia-rnd/evernode/daocontract/node_modules/@vercel/ncc/dist/ncc/index.js.cache.js:1:612247)
    at iteratePitchingLoaders (/Users/denisangell/projects/transia-rnd/evernode/daocontract/node_modules/@vercel/ncc/dist/ncc/index.js.cache.js:1:612344)
    at /Users/denisangell/projects/transia-rnd/evernode/daocontract/node_modules/@vercel/ncc/dist/ncc/index.js.cache.js:1:612476
    at handleResult (/Users/denisangell/projects/transia-rnd/evernode/daocontract/node_modules/@vercel/ncc/dist/ncc/index.js.cache.js:1:617642)
    at loadLoader (/Users/denisangell/projects/transia-rnd/evernode/daocontract/node_modules/@vercel/ncc/dist/ncc/index.js.cache.js:1:617181)
    at /Users/denisangell/projects/transia-rnd/evernode/daocontract/node_modules/@vercel/ncc/dist/ncc/index.js.cache.js:37:1770552
    at /Users/denisangell/projects/transia-rnd/evernode/daocontract/node_modules/@vercel/ncc/dist/ncc/index.js.cache.js:37:374702
    at _done (eval at create (/Users/denisangell/projects/transia-rnd/evernode/daocontract/node_modules/@vercel/ncc/dist/ncc/index.js.cache.js:20:75523), <anonymous>:9:1)
    at eval (eval at create (/Users/denisangell/projects/transia-rnd/evernode/daocontract/node_modules/@vercel/ncc/dist/ncc/index.js.cache.js:20:75523), <anonymous>:34:22)

hpdevkit / containers getting stuck.

Screen Shot 2023-04-28 at 09 55 41

Everything was running fine last day or two then all of a sudden the containers started failing execution. ive run hpdevkit clean, updated hpdevkit, ive run a empty contract, ive deleted the containers in docker manually, ive given docker x3 the system resources it had before.... nothing seems to get it out of this.

How / where can i get more debug to figure out what is causing the execution to fail?

Self hosted interface

Now that the nodes require a SSL is there a how to showing a HTML page that can be attached on a contract to act as a self hosted interface for the contract.....

I would be looking accomplish the following.

Have a FORM the user can complete, that will the connect via a web socket to the contract as well and submit the results there of. This way one does not need to host a front end to the dApp outside Evernode. But the contract its self can serve the interface. One simply would need to "look up" where the contract is exposed and then provide those links (obv if the contract moves host the external links need updating)....

Upload never completes contract deployment

I manually killed first one, to try again but keeps just hanging. Assume the full path name to the file is required?

Will try another host in a bit.

Also the tutorial does not cover multiple hosts, my contract needs at min 3 contract instances, how does one achieve that simply repeat all the steps and deploy it on 3 hosts i assume?

Screen Shot 2022-10-23 at 09 59 30

Error response from daemon: Container _hash_ is not running

If I remember correctly: I was running a local cluster to test out my contract and my laptop ran out of battery, resulting it to shutdown.

sudo npm start

> [email protected] start
> npm run build && hpdevkit deploy dist

....
....

command: deploy (cluster: default)
Error response from daemon: Container 2f034............ad6e is not running

I suspected that this had something to do with my previous test (still haven't destroyed it) and ran hpdevkit clean and ran npm start again, new error, which I've encountered in the past:

sudo npm start

> [email protected] start
> npm run build && hpdevkit deploy dist
....

ncc: Version 0.34.0
ncc: Compiling file index.js into CJS
...
command: deploy (cluster: default)

Initializing deployment cluster
sub-command: stop
Cluster 'default' does not exist.
sub-command: create
Creating 'default' cluster of size 3
hpdevkit_default_vol
2df6bafe....................25d667735377
Contract directory created at /hpdevkit_vol/node1
Contract directory created at /hpdevkit_vol/node2
Contract directory created at /hpdevkit_vol/node3
hpcore exited normally.
hpcore exited normally.
hpcore exited normally.
25b4d0602213riddle4cf8e8b3dcece625b4492548348581A464R250i000i00020Q213Z01.......
sub-command: bindmesh
sub-command: stop
hpdevkit_defaut_node_1
hpdevkit_default_node_2
hpdevkit_default_node_3
sub-command: sync
Applying hp.cfg overrides
Applying hp.cfg overrides
Applying hp.cfg overrides
sub-command: start
hpdevkit_default_node_1
hpdevkit_default_node_3
hpdevkit_default_node_2
Streaming logs of node 1:
sub-command: logs
20221118 06:26:26.109 [inf][hpc] Public key: ed4bda97d1...........eb556c2632d5ee
20221118 06:26:26.109 [inf][hpc] Contract: f2fb6a8f-......bf0bc0 (1.0)
20221118 06:26:26.129 [err][hpc] 2: Error in checking hpfs status at mount /hpdevkit_vol/node1/contract_fs/mnt.
20221118 06:26:26.130 [err][hpc] Couldn't initialize hpfs process at mount /hpdevkit_vol/node1/contract_fs/mnt.
20221118 06:26:26.130 [err][hpc] Contract file system initialization failed.

Steps to reproduce (IIRC)

  1. npm start
  2. Shutdown the machine while the cluster is up & running
  3. Switch on the machine and run npm start again

It should result in the first error.

Deploying contract ~ tecINSUFFICIENT_FUNDS

returning Transaction result: tecINSUFFICIENT_FUNDS Tenant received acquire error: TRANSACTION_FAILURE

can check i do have EVRs issued to r4DosiqK2PYcemac4ySY9B8VXP8aRzABbP https://hooks-testnet-v2-explorer.xrpl-labs.com/r4DosiqK2PYcemac4ySY9B8VXP8aRzABbP/lines

following ... https://github.com/HotPocketDev/evernode-sdk/blob/main/evernode/tutorial-basics.md

   let instanceName;
   try {
      const result = await tenantClient.acquireLease(pickedHost.address, {
         owner_pubkey: "ed1cac2eadcd4272e4d61ab7db9e2af2469b9a5c174d86a97056cf000db7863219", // Replace the public key you've received in Step 3
         contract_id: "dc411912-bcdd-4f73-af43-32ec45844b9a",
         image: "hp.latest-ubt.20.04-njs.16",
         config: {}
      });
      console.log('Tenant received instance ', result.instance);
      instanceName = result.instance.name;
   }
   catch (err) {
      console.log("Tenant received acquire error: ", err.reason);
   }

Global Clock (PAXOS)

PAXOS is a complicated thing to code, I doubt that most devs would be able to integrate a global clock in their contracts.
Implementing a global clock (via PAXOS) in the contract lib as a function would be best moving forward Time().

Since time is a critical component in distributed systems, and since contracts are basically standalone L1 blockchains, this needs to be implemented.

`ACQUIRE_ERR` due to timeout

I am reading thru all of the markdowns and getting acquainted with the architecture.

Yesterday I was successfully able to acquire host leases.

Today, I have attempted to acquire specific host and also random hosts. I have made several attempts over the last few hours to re-try acquiring a host lease.

All of my attempts are failing with

$ evdevkit acquire
command: acquire
Picked random host rsLdDhxqcaaRbM4rqTwN75x6AKHs82xyEE
Transaction result: tesSUCCESS
Waiting for acquire response... (txHash: 06CE3C9E6888BE0CD284206DE5E7BC1C2AB9D8C45D443795B5342E2859D7B1F4)
Error occurred while acquiring the instance: { error: 'ACQUIRE_ERR', reason: 'TIMEOUT' }

When I look at the Evernode dashboard for the specific host that was selected via the acquire and the lease offer has been taken.

What is the underlying cause of the { error: 'ACQUIRE_ERR', reason: 'TIMEOUT' } ?

Also, i just wanted to say that this project is very inspiring. I think what you guys are building is awesome 💯 🙏

Pointer resolution services

Exploring usecases, keeping a contract forever available.

  1. Daemon service which I think is do able like the crawling service described. This launches contracts.

  2. A url / fixed pointer from the client is needed. Unless you run your own services there is no way for a client to know which contract to connect to.

Guessing a fixed URL registrar or a Evernode URL would be most useful.

Eg. I point client to evernode.com/my-cool-product evernode then resolves that to contract xyz at host y on port z.

Hopefully that makes sense.

Struggling with multiple UNL messages.

Screen Shot 2022-10-19 at 18 16 27

also get strange message with the publickey some times come in...

what pattern will make using the UNL multiple times to send data around the contracts during a single round?

'use strict'

const HotPocket = require('hotpocket-nodejs-contract')

const  round = async (ctx, count) => {
    const unlSize = ctx.unl.count();
    const hpconfig = await ctx.getConfig();
    // Wait only for half of roundtime.
    const timeoutMs = Math.ceil(hpconfig.consensus.roundtime / 2);
    let completed = false;

    // Start listening to incoming NPL messages before we send ours.
    const promise = new Promise((resolve, reject) => {
        let receivedNos = [];

        function getMax() {
            console.log(`Received Numbers :`, receivedNos);
            let max = 0;
            for (const randomNumber of receivedNos) {
                if (randomNumber > max) {
                    max = randomNumber;
                }
            }
            return max;
        }


        let timer = setTimeout(() => {
            clearTimeout(timer);
            completed = true;
            // If we've received less than what we expect, throw error.
            if (receivedNos.length < unlSize)
                reject('Error generating the random number.');
            else
                resolve(getMax());
        }, timeoutMs)

        ctx.unl.onMessage((node, msg) => {
            if (!completed) {
                const obj = JSON.parse(msg.toString());
                if (obj.key === "randomNumber_"+count) {
                    const number = Number(obj.value);
                    receivedNos.push(number);
                }
                if (receivedNos.length === unlSize) {
                    clearTimeout(timer);
                    completed = true;
                    resolve(getMax());
                }
            }
        });

    });

    const min = 1;
    const max = 5;

    const random = Math.floor(Math.random() * (max - min + 1)) + min;
    await ctx.unl.send(JSON.stringify({
        key: "randomNumber_"+count,
        value: random
    }));

    const receipt = await promise;
    console.log(`Decided Random No. for round(${count}):`, receipt);
} 

const mycontract = async (ctx) => {
    // Your smart contract logic.

    if (!ctx.readonly) {
        let count = 0
        while(count < 3) {
            await round(ctx, count)
            count++
        }
    }
}

const hpc = new HotPocket.Contract()
hpc.init(mycontract)

Error in checking hpfs status at mount /hpdevkit_vol/node1/contract_fs/mnt.

Lathans-iMac:mycontract lathan$ npm start

> [email protected] start
> npm run build && hpdevkit deploy dist


> [email protected] build
> npx ncc build src/mycontract.js -o dist

ncc: Version 0.34.0
ncc: Compiling file index.js into CJS
2980kB  dist/index.js
2980kB  [4002ms] - ncc 0.34.0
command: deploy (cluster: default)
sub-command: stop
hpdevkit_default_node_3
hpdevkit_default_node_2
hpdevkit_default_node_1
hpdevkit_default_node_5
hpdevkit_default_node_4
sub-command: sync
Applying hp.cfg overrides
Applying hp.cfg overrides
Applying hp.cfg overrides
Applying hp.cfg overrides
Applying hp.cfg overrides
sub-command: start
hpdevkit_default_node_4
hpdevkit_default_node_5
hpdevkit_default_node_3
hpdevkit_default_node_1
hpdevkit_default_node_2
Streaming logs of node 1:
sub-command: logs
20221013 02:29:41.158 [inf][hpc] Public key: ed70b730fd2d70f6559a8fc35f34a550f81fa7ddcdd73304375aa715324e86f496
20221013 02:29:41.158 [inf][hpc] Contract: d0e298cd-3cff-4572-b54c-7f5611af3837 (1.0)
20221013 02:29:41.181 [err][hpc] 2: Error in checking hpfs status at mount /hpdevkit_vol/node1/contract_fs/mnt.
20221013 02:29:41.181 [err][hpc] Couldn't initialize hpfs process at mount /hpdevkit_vol/node1/contract_fs/mnt.
20221013 02:29:41.198 [err][hpc] Contract file system initialization failed.

starting contract locks up often and i have to sit and restart and restart till it clears. what am i doing wrong or is there a better way i need to be doing this... also tried using hpdevkit clean but done not always resolve this.

(Hook/Host) Security issue with usage of Ledger Sequence

Since hosts are using ledger sequence (we're presuming that 1190 ledgers = 1 hour), there might be an issue when the ledger halts or slows down. If the ledger halts or slows down majorly, hosts will still be hosting contracts without getting paid or in a case where the ledger progress slows down: Their payment is delayed.

There are a few solutions being considered.

(Post for backtracking purposes, resolving w/ Richard & Ravin)

Artefact containers left behind in docker

Still not sure exactly how this happens but it happens after a while...

Screen Shot 2022-10-21 at 12 34 51

try and clean docker...
Screen Shot 2022-10-21 at 12 35 22

they are still there.

I do, do other dev with other projects in docker. But it this happens after many hrs dev with Evernode.
Will monitor for further information.

(those image names from what I can find are place holders docker uses while spooling instances)

Restrictions on deployment of contracts

Question with regards to rate at which one can deploy a contract to evernode.

If I find a bug that causes the node I've deployed to to crash. What's stopping me from deploying that same contract across every node?

Assume there needs to be some gate keeping there, so say how often and across how many nodes a contract can be deployed. Though, I could just slightly alter it and then deploy it on others.

Something that jumped in my head after exploring here a little to night.

Long running process?

Is there a way to run a process for a long time?

app.isLoaded() in my example is always FALSE every time a new consens round comes.. how to do this?

Screen Shot 2023-04-26 at 21 12 56

[hpdevkit NPL - NodeJS] HotPocket periodically sends the node's publickey instead of the intended data

From time to time, nodes may send its publickey instead of the intended data. In my case, I wanted the node to distribute its signed tx blob (binary content but in string format) but it simply sends its publickey instead of the signed tx blob:

Removing key rn8oT5HbpezHnmSMPAg7rVL5EqmjWgeHUx from dApp's SignerList
12000C220000000024020E31D6201B020E322A20230000000268400000000000002873008114271812682516FC247CF34E0D712CBA824C30904CF3E0107321ED95239C88996CDD2550CBF63278DA491125963B76C0C657F0DB3A01CB93A64BCB7440395D0F01A3E3FE52B05DD0623DCC6E15B2E2C443E32867B57DFADCAEC3ED0C3CB8B824E81DEC631C036849255A3EE8F1FB5A95FD5ED85043F93A8ED20D080A068114B2FE0EB48855C2C18DE3ECD16BD2A4C69D79B54FE1F1F4EB1300018114B2FE0EB48855C2C18DE3ECD16BD2A4C69D79B54FE1EB1300018114DCF04336D7DFC8DB5BC1F21C0820B343F9DD0FDAE1F1
[HPWS.C PID+00000231] ABEND: Temporary failure in name resolution
[
  'edfc157de3cee8cf8e0d8a2605a52640bfb639f5ab116da5ed12206cd1e0fd26df'
]

The long text is the intended data in string format and the array is the data that it received, the content was less than 500 bytes which I've configured my NPL round limit to:

"round_limits": {
        "user_input_bytes": 100000,
        "user_output_bytes": 100000,
        "npl_output_bytes": 1000000,
        "proc_cpu_seconds": 1000000
    }

My NPL algo works with any other data but it doesn't seem to work if the message is long. (cc @lathanbritz since he encountered this error in the past.)

TypeScript env file

does the .env file get deployed along with the rest of the js project files?
Screen Shot 2022-10-13 at 00 10 43

roundtime

No where in the documentation does it define limits on the round times. Other than it has to be in milliseconds.

What is the upper limit of a round time? Could i have a round that lasts a hour/day/month/year?

Network crawl

I know it's not for everyone, but if you would be so kind as to add to the tutorials the ability for that contract to 'walk' the network and deploy on different nodes. Just that is a amazing thing to play with and would love to experiment there a little.

Not the first thing I'll be building but would be grand to have an example there to work from down the line.

Amazing stuff I'm up and building on evernode already 🥳🤯

Trans compile side effects

Screen Shot 2022-10-15 at 21 10 02

Screen Shot 2022-10-15 at 21 05 40

Cannot construct STArray from value given

this is following the standard format from XRPL-Labs lib to sign a transaction https://gist.github.com/WietseWind/557a5c11fa0d474468e8c9c54e3e5b93

also less important there seems to be another transcompile issue with the buffer from...

const Memos = { Memo: { MemoData: Buffer.from(JSON.stringify(data.rawResultsNamed), 'utf-8').toString('hex').toUpperCase(), MemoFormat: Buffer.from('text/csv', 'utf-8').toString('hex').toUpperCase(), MemoType: Buffer.from('rates:' + JSON.stringify(data.rawResults), 'utf-8').toString('hex').toUpperCase() } }

Error to install

Hi,

I have tried to install Evernode but there is error during the installation
Content of Error is as below

Can you check it?

---Sashimono prerequisites installer---
STAGE Installing dependencies
Hit:1 https://deb.nodesource.com/node_20.x nodistro InRelease
Hit:2 http://us.archive.ubuntu.com/ubuntu focal InRelease
Hit:3 http://security.ubuntu.com/ubuntu focal-security InRelease
Get:4 http://us.archive.ubuntu.com/ubuntu focal-updates InRelease [114 kB]
Hit:5 http://us.archive.ubuntu.com/ubuntu focal-backports InRelease
Fetched 114 kB in 1s (154 kB/s)
Reading package lists...
Reading package lists...
Building dependency tree...
Reading state information...
quota is already the newest version (4.05-1).
cgroup-tools is already the newest version (0.41-10).
fuse3 is already the newest version (3.9.0-2).
curl is already the newest version (7.68.0-1ubuntu2.21).
openssl is already the newest version (1.1.1f-1ubuntu2.21).
uidmap is already the newest version (1:4.8.1-1ubuntu5.20.04.5).
0 upgraded, 0 newly installed, 0 to remove and 187 not upgraded.
STAGE Configuring fstab

acquire --help flag `image` definition

I see on acquire --help there is an image flag.

-i, --image [image] Instance image

Can you refresh my memory on what those options are?

darwin/amd64 or just amd64?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.