rusty-kaspa icon indicating copy to clipboard operation
rusty-kaspa copied to clipboard

Rewrite wish list

Open michaelsutton opened this issue 3 years ago • 26 comments

An issue for gathering any possible feature wished to be implemented during the rewrite of Kaspa to Rust. This might help guiding the developers to design things in a specific way, even if the actual feature is yet to be implemented.

michaelsutton avatar Aug 14 '22 17:08 michaelsutton

The option to let getting UTXOs being spent from "all addresses except this this and this".

Aleoami avatar Sep 07 '22 10:09 Aleoami

Ditch gRPC on RPC and using JSON-HTTP as main provider.

KaffinPX avatar Sep 07 '22 10:09 KaffinPX

Planned RPC endpoints, not a chaos like go-kaspad.

KaffinPX avatar Sep 07 '22 10:09 KaffinPX

txindex

someone235 avatar Sep 07 '22 12:09 someone235

  • eUTXO model.

D-Stacks avatar Sep 07 '22 15:09 D-Stacks

  • base58 encoded addresses

D-Stacks avatar Sep 07 '22 15:09 D-Stacks

  • benchmark msgpack alternative to gRPC in both p2p and rpc perhaps for future switch, if indeed more preformant. (both in compaction and serialization / deserialization)

D-Stacks avatar Sep 07 '22 15:09 D-Stacks

  • developer wallet mode, which unlocks among potentially other things, payloads and custom signing operations.

D-Stacks avatar Sep 07 '22 15:09 D-Stacks

Archival subnetwork:

  • Allow the concept of partial archival nodes:
  1. allow for a random section of the blockdag to be stored by nodes (for example with a --archival 3), which allows the network to distribute the archival functionality among various kaspads offering diskspace, without commiting to the full blockDAG ledger. I guess the number should reffer to the number of randomized prunning periods that the kaspad will store.

  2. allow for partial archival nodes with a certain lookback period (for example with a --archival-lookback 3) which will store 3 extra pruning points beyond the current minimum.

D-Stacks avatar Sep 07 '22 15:09 D-Stacks

This is like a side note - even though Coinbase Rosetta is a separate entity, it may be wise if its not too difficult to provide mechanisms to answer the calls it makes etc.

https://www.rosetta-api.org/docs/Reference.html

XVGHypeMan avatar Sep 07 '22 16:09 XVGHypeMan

  • eUTXO model.

Payloads in outputs*.

KaffinPX avatar Sep 08 '22 13:09 KaffinPX

Compare(benchmark) ed25519(blake2b) with secp256k1 for a possible support in future.

KaffinPX avatar Sep 08 '22 13:09 KaffinPX

Better call names (on RPC)?

KaffinPX avatar Sep 08 '22 13:09 KaffinPX

No crashes whatsoever.

michaelsutton avatar Sep 08 '22 14:09 michaelsutton

Compare(benchmark) ed25519(blake2b) with secp256k1 for a possible switch in future.

I don't think this would be a switch though, since need backward compatibility, but can support ed25519 ontop.

D-Stacks avatar Sep 08 '22 16:09 D-Stacks

  • certificates, proxies and support tor addresses.

D-Stacks avatar Sep 08 '22 18:09 D-Stacks

Native pagination of the UTXO data to avoid timeouts on a mega-multi-UTXO addresses

Aleoami avatar Sep 09 '22 10:09 Aleoami

simple ui display ports for kaspad and kaspawalletd.

D-Stacks avatar Sep 09 '22 17:09 D-Stacks

Stratum implementation on node level.

This can really come in varying degrees / with suboptions:

    1. Var diff so miners can display hashrate and better mining stats.
    1. Seperate Api for stats

D-Stacks avatar Sep 09 '22 17:09 D-Stacks

Better automatic utxo selection scheme in wallet: perhaps dynamic based on utxostate size?

D-Stacks avatar Sep 11 '22 15:09 D-Stacks

Stratum implementation on node level.

This can really come in varying degrees / with suboptions:

    1. Var diff so miners can display hashrate and better mining stats.
    1. Seperate Api for stats

Cant it be based on https://github.com/fungibilly/kaspad-stratum, given that it is written in rust @D-Stacks ?

michaelsutton avatar Sep 11 '22 15:09 michaelsutton

Stratum implementation on node level. This can really come in varying degrees / with suboptions:

    1. Var diff so miners can display hashrate and better mining stats.
    1. Seperate Api for stats

Cant it be based on https://github.com/fungibilly/kaspad-stratum, given that it is written in rust @D-Stacks ?

based probably, but i know it has some issues, so no miner is actually using it. Also it would need to be expanded / altered to allow for multiple solo mining participants.

Currently adapters get told on start-up to which address they should mine too. In the case of a stratum on the node it should be inferred by mining.authorize method, and map the building of blocktemplates to corresponding connections.

Beyond this I would think about implementing Var diff for hashrate stat collection, one of he main reasons the adapters aren't used is

  1. extra installation steps - I suppose having it built into the node completely negates this
  2. miners mine to pools to receive information about their mining statistics

If the idea is to decentralize mining power as much as possible towards node mining, this would greatly help. currently we have over 56%+ of miners pool mining, (most of he rest consists of custom miners, probably fpgas), despite having 3 open source stratum adapters available. Ideally i'd even add a ui port where miners can see data, but so far this seems beyond the scope of the node.

I would expect @tmrlvi to also have an implementation of the stratum protocol as well as var diff in rust.

D-Stacks avatar Sep 11 '22 19:09 D-Stacks

  • Adopt bitcoin cash op codes standard.

D-Stacks avatar Sep 11 '22 21:09 D-Stacks

Node RPC subsystem stats request

Aleoami avatar Sep 17 '22 19:09 Aleoami

Fast and optimized client wallet that can be scaled for high transactional rates, and automated usages i.e. pools, exchanges and others.

  • multiple to-addresses in wallet send (mirrored in transaction outputs).
  • async requests
  • ...

D-Stacks avatar Sep 17 '22 20:09 D-Stacks

benchmark sustainable max. gas limit per block in accordance with min. requirements to run a node.

D-Stacks avatar Sep 18 '22 09:09 D-Stacks