Bitcoin Forum
June 02, 2024, 04:08:05 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Staking Service Network (decentralized Master Node)  (Read 169 times)
Zergity (OP)
Newbie
*
Offline Offline

Activity: 30
Merit: 0


View Profile
July 24, 2018, 05:22:46 PM
 #1

Staking Service Network (SSN)

So, we're redesigning the Master Node system for our stablecoin project to make it:
  • More decentralized: no hard limit on entrant requirement,
  • Fault tolerant: a p2p network where nodes can come and go,
  • General purpose: fits for multiple services,
  • Scalable: workload is evenly distributed between all nodes,
  • Auditability: all service operations are recorded on-chain for audit and prevent history forging (with no blocksize overhead).

Techinical Paper: https://yggchain.github.io/ssn.pdf

We also design the Input Locking Service in the SSN to provide instant confirmation for ALL transactions, completely resistant to double-spend attack.

We need your commends and suggestions about technical design, overall performance and possible attack vectors.

Thanks.
dvietha
Newbie
*
Offline Offline

Activity: 15
Merit: 0


View Profile
July 25, 2018, 02:08:15 PM
 #2

Hello,

Interesting idea. Can you explain more about this?

Quote
4. Using Rejection Sampling or Frequency Counting algorithm on the list to select a
serving node.

Thank you!
Zergity (OP)
Newbie
*
Offline Offline

Activity: 30
Merit: 0


View Profile
July 26, 2018, 03:17:26 AM
 #3

Interesting idea. Can you explain more about this?

Quote
4. Using Rejection Sampling or Frequency Counting algorithm on the list to select a
serving node.

When you have an item list, with each item has a different chance to be selected, called frequency. You use Rejection Sampling or Frequency Counting to randomly pick one of them.

Frequency Counting is stacking up all the item, and count the total frequency. Pick a random number between 0 and total frequency. Start counting from the first item to pick the item located in that random number.

Rejection Sampling is to draw a frequency graph, and keep throwing dart to the board, until the dart hit the area bellow the graph.

https://am207.github.io/2017/wiki/images/Rejection.png
dvietha
Newbie
*
Offline Offline

Activity: 15
Merit: 0


View Profile
July 26, 2018, 04:11:21 AM
 #4


When you have an item list, with each item has a different chance to be selected, called frequency. You use Rejection Sampling or Frequency Counting to randomly pick one of them.

Frequency Counting is stacking up all the item, and count the total frequency. Pick a random number between 0 and total frequency. Start counting from the first item to pick the item located in that random number.

Rejection Sampling is to draw a frequency graph, and keep throwing dart to the board, until the dart hit the area bellow the graph.

https://am207.github.io/2017/wiki/images/Rejection.png

So when implementing you will choose one of amongst the two methods for service node selection, right?
Zergity (OP)
Newbie
*
Offline Offline

Activity: 30
Merit: 0


View Profile
July 26, 2018, 04:33:04 AM
 #5


When you have an item list, with each item has a different chance to be selected, called frequency. You use Rejection Sampling or Frequency Counting to randomly pick one of them.

Frequency Counting is stacking up all the item, and count the total frequency. Pick a random number between 0 and total frequency. Start counting from the first item to pick the item located in that random number.

Rejection Sampling is to draw a frequency graph, and keep throwing dart to the board, until the dart hit the area bellow the graph.

https://am207.github.io/2017/wiki/images/Rejection.png

So when implementing you will choose one of amongst the two methods for service node selection, right?

Yes, it actually depends on whether you can find a good enough proposal density function for the data sample. So yeah, both of them are feasible.
dvietha
Newbie
*
Offline Offline

Activity: 15
Merit: 0


View Profile
July 26, 2018, 06:02:29 AM
 #6

Another question from me.

In your paper there's content as following:

Quote
A locked transaction with one input UTXO will contains up to 2N+1 signatures, and almost every transactions are locked using this service.

Then miners need to verify this? if yes, then how they can do? How miner can know/verfiy a tnx containing correct and enough signatures as the output result of rejection sampling?

dvietha
Newbie
*
Offline Offline

Activity: 15
Merit: 0


View Profile
July 26, 2018, 06:32:50 AM
 #7

Hi there,

Quote
For example, the Input Locking Node can only be selected to lock an input, if its stake is no less than the input UTXO value.

If working like this then if I want to spend a small of money but I only have a very large unspent tnx output then my spending also need to wait to be locked by a big stake service node or have to wait long time to be confirmed by PoW, right?

Do you think that we can have another way to make the small spend tnx faster?

Thank you!
Zergity (OP)
Newbie
*
Offline Offline

Activity: 30
Merit: 0


View Profile
July 26, 2018, 08:09:59 AM
 #8

Quote
A locked transaction with one input UTXO will contains up to 2N+1 signatures, and almost every transactions are locked using this service.

Then miners need to verify this? if yes, then how they can do? How miner can know/verfiy a tnx containing correct and enough signatures as the output result of rejection sampling?

1. 2N+1 signatures are of: sender and 2N of ILS nodes.
2. All ILS node PubKeys can be calculated by everyone using the said Rejection Sampling (all data is on-chain).
3. As part of Schnorr Signature protocol, after the first handshake round with each ILS nodes, tx sender has the list of all available ILS nodes. He will create a bit mask (each bit for each ILS node), to mark all nodes with the signature. This bit mask (takes only 2N bit, or N/4 bytes) is included in the TX, and signed by the sender and all ILS nodes.
4. From the TX bit mask, everyone will know which ILS node signatures is aggregated in the Schnorr MultiSig. So they can verify the signature with all their PubKey aggregated.

Every participant need to verify the signature, including miners and SPV, and SSN nodes.
dvietha
Newbie
*
Offline Offline

Activity: 15
Merit: 0


View Profile
July 26, 2018, 08:30:34 AM
 #9

Quote
A locked transaction with one input UTXO will contains up to 2N+1 signatures, and almost every transactions are locked using this service.

Then miners need to verify this? if yes, then how they can do? How miner can know/verfiy a tnx containing correct and enough signatures as the output result of rejection sampling?

1. 2N+1 signatures are of: sender and 2N of ILS nodes.
2. All ILS node PubKeys can be calculated by everyone using the said Rejection Sampling (all data is on-chain).
3. As part of Schnorr Signature protocol, after the first handshake round with each ILS nodes, tx sender has the list of all available ILS nodes. He will create a bit mask (each bit for each ILS node), to mark all nodes with the signature. This bit mask (takes only 2N bit, or N/4 bytes) is included in the TX, and signed by the sender and all ILS nodes.
4. From the TX bit mask, everyone will know which ILS node signatures is aggregated in the Schnorr MultiSig. So they can verify the signature with all their PubKey aggregated.

Every participant need to verify the signature, including miners and SPV, and SSN nodes.

Not only verify the signature. I mean how miners know a tnx need to be locked by which selection service nodes.

For example, I have a tnx T1 and after request sampling, my T1 need to be locked by S1, S2 and S5. Afterward, how miners can know T1 have to be locked by S1, S2 and S5.
Zergity (OP)
Newbie
*
Offline Offline

Activity: 30
Merit: 0


View Profile
July 26, 2018, 08:39:50 AM
 #10

Quote
A locked transaction with one input UTXO will contains up to 2N+1 signatures, and almost every transactions are locked using this service.

Then miners need to verify this? if yes, then how they can do? How miner can know/verfiy a tnx containing correct and enough signatures as the output result of rejection sampling?

1. 2N+1 signatures are of: sender and 2N of ILS nodes.
2. All ILS node PubKeys can be calculated by everyone using the said Rejection Sampling (all data is on-chain).
3. As part of Schnorr Signature protocol, after the first handshake round with each ILS nodes, tx sender has the list of all available ILS nodes. He will create a bit mask (each bit for each ILS node), to mark all nodes with the signature. This bit mask (takes only 2N bit, or N/4 bytes) is included in the TX, and signed by the sender and all ILS nodes.
4. From the TX bit mask, everyone will know which ILS node signatures is aggregated in the Schnorr MultiSig. So they can verify the signature with all their PubKey aggregated.

Every participant need to verify the signature, including miners and SPV, and SSN nodes.

Not only verify the signature. I mean how miners know a tnx need to be locked by which selection service nodes.

For example, I have a tnx T1 and after request sampling, my T1 need to be locked by S1, S2 and S5. Afterward, how miners can know T1 have to be locked by S1, S2 and S5.

By using the same request sampling process:
+ Input: ILS nodes list (from chain): S0-S1-...-S99, target block hash, input UTXO (block number & tx number)
+ Output: S1, S2 and S5
dvietha
Newbie
*
Offline Offline

Activity: 15
Merit: 0


View Profile
July 26, 2018, 08:44:51 AM
 #11

Quote
By using the same request sampling process:
+ Input: ILS nodes list (from chain): S0-S1-...-S99, current block hash, input UTXO (block number & tx number)
+ Output: S1, S2 and S5

Thanks, make sense!
Zergity (OP)
Newbie
*
Offline Offline

Activity: 30
Merit: 0


View Profile
July 26, 2018, 09:17:51 AM
 #12

Hi there,

Quote
For example, the Input Locking Node can only be selected to lock an input, if its stake is no less than the input UTXO value.

If working like this then if I want to spend a small of money but I only have a very large unspent tnx output then my spending also need to wait to be locked by a big stake service node or have to wait long time to be confirmed by PoW, right?

Do you think that we can have another way to make the small spend tnx faster?

It depends on the input UTXO value, not output value. And it's for your own safety. People can send a small transaction from a large input UTXO, just to double spend another large transaction with the same UTXO.

Beside, you only have to worry about this, when you are some kind of top coin holder (like top 10 or something). With that amount of money, people usually wait for several confirmations anyway.
dvietha
Newbie
*
Offline Offline

Activity: 15
Merit: 0


View Profile
July 26, 2018, 09:51:57 AM
 #13

Quote
UTXO has to be signed by both current block and previous block set of nodes

If so then how a tnx to be instant confirmation as your spec if it need to wait one more block sealing; as you know block sealing by PoW take times.
Zergity (OP)
Newbie
*
Offline Offline

Activity: 30
Merit: 0


View Profile
July 26, 2018, 10:08:29 AM
 #14

Quote
UTXO has to be signed by both current block and previous block set of nodes

If so then how a tnx to be instant confirmation as your spec if it need to wait one more block sealing; as you know block sealing by PoW take times.

It is instant, you don't have to wait for new block to be mined. "Current block and previous block" means "lastest block and the one before it", I might need to clarify it in the paper. Thanks.
dvietha
Newbie
*
Offline Offline

Activity: 15
Merit: 0


View Profile
July 26, 2018, 10:54:50 AM
Last edit: July 26, 2018, 11:05:05 AM by dvietha
 #15

Quote
UTXO has to be signed by both current block and previous block set of nodes

If so then how a tnx to be instant confirmation as your spec if it need to wait one more block sealing; as you know block sealing by PoW take times.

It is instant, you don't have to wait for new block to be mined. "Current block and previous block" means "lastest block and the one before it", I might need to clarify it in the paper. Thanks.

Okay, I got it! Take your time to update the paper to make it clearly Wink
dvietha
Newbie
*
Offline Offline

Activity: 15
Merit: 0


View Profile
August 04, 2018, 02:31:31 AM
 #16

Can you make a summary to easy understand what is the main differences between your SSN and DASH?
Zergity (OP)
Newbie
*
Offline Offline

Activity: 30
Merit: 0


View Profile
August 04, 2018, 05:10:07 AM
 #17

Can you make a summary to easy understand what is the main differences between your SSN and DASH?

SSN vs Master Node:

1. SSN is a decentralized p2p network, where everyone can easily join, while MN is widely considered to becoming more and more centralized due to the extremely high entry requirement.

2. SSN nodes can come and go as they will, while MN relies on the high availability of its nodes.

3. SSN using Kademlia DHT allows the network to scale to any level of adoptation, while MN works like a cloud service, where nodes have to keep track of each other avalaibility.

4. Every SSN operation is recorded on-chain, so everyone can re-evaluated and audit. That prevents any kind of history forging and provides the Proof of Bad Conduct for the network to punish the bad nodes. Meanwhile, MN is an offchain solution, where nothing is recorded onchain.

SSN's Input Locking vs MN's InstaSend:

1. SSN load balancing nature allow all transactions to be efficiently locked without any addition fee, while InstaSend only locks on request, with a higher fee.

2. SSN Input Locking mechanism relies on the collateralization and punishment, with 100% probability. That means, a locked transaction is either be finalized, or repaid by a bad node's collaterlized asset. Either ways, transaction receipients always get the value they are promised (by tx remitters and/or Input Locking Nodes).

Meanwhile, MN InstaSend only provides a high probability of finality. There's still chance that locked tx is double spent when 6/10 of selected nodes are compromised, and there's nothing MN can do about it.

Side Note: a prototype of SSN and Input Locking is being developed right now.
dvietha
Newbie
*
Offline Offline

Activity: 15
Merit: 0


View Profile
August 15, 2018, 09:56:00 AM
 #18

Can you make a summary to easy understand what is the main differences between your SSN and DASH?

SSN vs Master Node:

1. SSN is a decentralized p2p network, where everyone can easily join, while MN is widely considered to becoming more and more centralized due to the extremely high entry requirement.

2. SSN nodes can come and go as they will, while MN relies on the high availability of its nodes.

3. SSN using Kademlia DHT allows the network to scale to any level of adoptation, while MN works like a cloud service, where nodes have to keep track of each other avalaibility.

4. Every SSN operation is recorded on-chain, so everyone can re-evaluated and audit. That prevents any kind of history forging and provides the Proof of Bad Conduct for the network to punish the bad nodes. Meanwhile, MN is an offchain solution, where nothing is recorded onchain.

SSN's Input Locking vs MN's InstaSend:

1. SSN load balancing nature allow all transactions to be efficiently locked without any addition fee, while InstaSend only locks on request, with a higher fee.

2. SSN Input Locking mechanism relies on the collateralization and punishment, with 100% probability. That means, a locked transaction is either be finalized, or repaid by a bad node's collaterlized asset. Either ways, transaction receipients always get the value they are promised (by tx remitters and/or Input Locking Nodes).

Meanwhile, MN InstaSend only provides a high probability of finality. There's still chance that locked tx is double spent when 6/10 of selected nodes are compromised, and there's nothing MN can do about it.

Side Note: a prototype of SSN and Input Locking is being developed right now.

Sound great! Thank you for your very details explanation.
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!