Author

Topic: NXT :: descendant of Bitcoin - Updated Information - page 668. (Read 2761642 times)

hero member
Activity: 750
Merit: 500
www.coinschedule.com
- Big stakeholders have an interest in a working Nxt and a high NXT value (or not!)
- This can be reached by having a Nxt where no trust is needed (this is the whole point of this crypto)
- So, biiiiiiig stakeholders should not exist for their self-interest
- But with the ability to split the stake into smaller accounts, big stakeholders can hide themselves
- We are doomed

I'm confused Huh

I personally feel that the stakeholders should be more supporting to the whole community and do more giveaways to people contributing to discussions and people working to build the infrastructure and technology that will make NXT successful in the long run.
hero member
Activity: 910
Merit: 1000
Androklis Polymenis (me) donates a million digital NXT coins to BPF! $43,000. Press release [PDF]: http://goo.gl/t8tWY8

+10
legendary
Activity: 1498
Merit: 1000
Androklis Polymenis (me) donates a million digital NXT coins to BPF! $43,000. Press release [PDF]: http://goo.gl/t8tWY8

https://twitter.com/Lets_Upgrade/status/438525224368107520

hero member
Activity: 784
Merit: 500
- Big stakeholders have an interest in a working Nxt and a high NXT value (or not!)
- This can be reached by having a Nxt where no trust is needed (this is the whole point of this crypto)
- So, biiiiiiig stakeholders should not exist for their self-interest
- But with the ability to split the stake into smaller accounts, big stakeholders can hide themselves
- We are doomed

I'm confused Huh

Time to sell all your Nxts! I am ready to buy them! Tongue
hero member
Activity: 687
Merit: 500
In your test case with 5 accounts of 10 nxt und 1 account of 50 nxt, the 50 nxt account should forge 61.5% of all blocks and the other account together 38.5%.
But your code let's the big account forge about 83% and thus he creates longer streaks than he really would.
full member
Activity: 168
Merit: 100
I would like introduce to the discussion the concept of sharing fees when small account decide to use a pool for receive fees more frequently over time.

Everybody talks about "leasing forging power of a account to another account to create pools". This involves reducing the number of nodes to the number of pools.

I maintain that it is better to keep the funds and forging power of each small account in the small account node

Is Not better the concept of sharing fees if your account is successful and forge?

who can refute my idea?

Dafuq did you just say (once again)? o_0

leasing forging power of a account to another account to create pools

1.000.000.000 Nxt Coin
100.000 Nxt Coin per pool

John account  90.000 Nxt 0 Node participate in forging
Mary account  9.900 Nxt 0 Node participate in forging
Bob account  100 Nxt 0 Node participate in forging


Total pool 100.000 Nxt 1 Node participate in forging
Total 1 Node participate in forging

Chance to forge 0,0001
rate forging 1440 blocs per day
52,6 Blocs per year
aprox 1 Bloc per week

1.000.000.000 Nxt Coin
100.000 Nxt Coin per pool
10.000 Nodes participate in forging




Sharing fees

1.000.000.000 Nxt Coin
100.000 Nxt Coin per pool

John account  90.000 Nxt 1 Node participate in forging
Mary account  9.900 Nxt 1 Node participate in forging
Bob account  100 Nxt 1 Node participate in forging

Total pool 100.000 Nxt
Total 3 Node participate in forging

Chance to forge 0,0001
rate forging 1440 blocs per day
52,6 Blocs per year
aprox 1 Bloc per week

1.000.000.000 Nxt Coin
100.000 Nxt Coin per pool
30.000 Nodes participate in forging. if there are only three accounts linked per pool

I am wrong?
legendary
Activity: 1890
Merit: 1086
Ian Knowles - CIYAM Lead Developer
That's not how the nxt forging algorithm works.
You are looking for the maximum of random number * balance to get the winner where you really should calculate the minimum of random number / balance and let the minimum win.

I think that how you choose the winner is irrelevant - it is only the probabilities that matter here.
sr. member
Activity: 294
Merit: 260
Thanks - but I need their *stake* as well to be included in the same diagram.

hero member
Activity: 784
Merit: 500
I would like introduce to the discussion the concept of sharing fees when small account decide to use a pool for receive fees more frequently over time.

Everybody talks about "leasing forging power of a account to another account to create pools". This involves reducing the number of nodes to the number of pools.

I maintain that it is better to keep the funds and forging power of each small account in the small account node

Is Not better the concept of sharing fees if your account is successful and forge?

who can refute my idea?

Dafuq did you just say (once again)? o_0
hero member
Activity: 687
Merit: 500
Here is the source code to my simulator:

Code:
#ifndef USE_LOG
         weights[ i ] = ( rand( ) % 1000 ) * balances[ i ];
#else
         weights[ i ] = ( rand( ) % 1000 ) * log( ( double )balances[ i ] );
#endif
         total_weight += weights[ i ];
      }
...
      for( size_t i = 0; i < balances.size( ); i++ )
      {
         double adjusted_weight = weights[ i ] * 1000 / total_weight;

         if( adjusted_weight > best_target )
         {
            winner = i;
            best_target = adjusted_weight;
         }
      }


That's not how the nxt forging algorithm works.
You are looking for the maximum of random number * balance to get the winner where you really should calculate the minimum of random number / balance and let the minimum win.
hero member
Activity: 910
Merit: 1000
- Big stakeholders have an interest in a working Nxt and a high NXT value (or not!)
- This can be reached by having a Nxt where no trust is needed (this is the whole point of this crypto)
- So, biiiiiiig stakeholders should not exist for their self-interest
- But with the ability to split the stake into smaller accounts, big stakeholders can hide themselves
- We are doomed

I'm confused Huh
hero member
Activity: 616
Merit: 500
Just talked to bittrex, they have only 86 signups from nxt at the moment..

You should all go and sign up.

Quote
Go to https://bittrex.com/Account/Register and use SUPPORT_NXT as the invite code. This gets you past the invite code queue. Place some trades, enabled 2FA, or try any of our other features to help us stress the site before the final launch. If you find a bug, we're handing out bug bounties as well. Having a great exchange helps us but also helps the NXT community.

Done! Smiley

Done
member
Activity: 112
Merit: 10
Just talked to bittrex, they have only 86 signups from nxt at the moment..

You should all go and sign up.

Quote
Go to https://bittrex.com/Account/Register and use SUPPORT_NXT as the invite code. This gets you past the invite code queue. Place some trades, enabled 2FA, or try any of our other features to help us stress the site before the final launch. If you find a bug, we're handing out bug bounties as well. Having a great exchange helps us but also helps the NXT community.

Done! Smiley
full member
Activity: 182
Merit: 100
NXT.org
Just talked to bittrex, they have only 86 signups from nxt at the moment..

You should all go and sign up.

Quote
Go to https://bittrex.com/Account/Register and use SUPPORT_NXT as the invite code. This gets you past the invite code queue. Place some trades, enabled 2FA, or try any of our other features to help us stress the site before the final launch. If you find a bug, we're handing out bug bounties as well. Having a great exchange helps us but also helps the NXT community.



I already sent out swarm to 30 people on this.
Perhaps we need a bigger swarm group
hero member
Activity: 600
Merit: 500
Nxt-kit developer
legendary
Activity: 1176
Merit: 1134
automated multisig gateway status

Had to restructure things to be able to have all three of the gateway servers be able to have a chance at sync'ing. I now have three servers, all monitoring the blockchain for AM's to update their state. The problem yesterday was that a multisig transaction needs to be in raw format and it gets much bigger than 1K, which is the limit of AM size. So, I made a mini-point to point network between all three gateway servers. They now have the ability to synchronize data structures from the other servers, so I can send the rawtransactions around for verification (each server should independently generate the same rawtransaction) and signing. I can also send any other important data, such as total balances and even all the user deposits/withdraws.

Now that I can get high speed data synchronization across the servers, a lot of possibilities open up. Since each server is independently calculating things, as long as all are in agreement, odds are really good that the data is correct. Especially since the data I am relying on is coming from either the dogecoind or NXT blockchain. For any withdrawal, I wait until all three servers come to a consensus on what the transaction should be. Doing the server to server communication directly avoids NXT transaction costs and it goes MUCH faster.

What is left now is coming up with a deterministic way of selecting the unspent outputs to add up to the requested amount. The issue is that the pool of available unspents can change due to deposits coming into one of the gateways. I guess I could just combine the oldest to newest unspents, that should work. Then I need to come up with synchronization points to proceed along the steps of multisig signing.

So, no external progress today, but the internals are restructured to be able to allow for peer to peer verification, so the rest should become much easier. All this work on the peer to peer verification has given me a lot of ideas for what sorts of things can be verified and published via AM. It will form a good basis for NXTcoins to build on. I see the automated gateway as being a gateway for a lot more than just other cryptos.

It will be possible to control the "issuing" of NXT assets linked to externally verifiable events. For example, Dominoes Pizza could issue Pizza assets, people could trade it, but also it could be redeemed automatically. As long as a delivery address is associated with the NXT account, just transfer the asset back to Dominoes (different NXT addresses for different types of pizzas) and a pizza arrives within 30 minutes. Delivery status could be monitored if it was available online. Using this mechanism, global companies can issue coupons and the distribution and redemption is all electronic, except for the actual delivery.

We can have externally available data peer verified and published via AM. Sounds simple enough, but the value is very big, especially if it is a market price data feed. Accurate historical marketprices would be in the NXT blockchain. Not only could people get access to this data from a decentralized network, once we have AT, people could make bets. I would imagine it wouldnt be too hard to implement a whole range of financial derivatives, sports betting, anything that can be done by combining real world data with turing complete script.

Now, here comes a totally unexpected possibility. What if the automated gateway was able to handle NXTcash? All this gateway coding made me realize it just might be able to be done, which means we could get NXTcash much, much sooner as we dont have to port it to Java.

User mints NXTcash and sends public part + corresponding NXT to gateway, which issues NXTcash Asset to the gateway account. At this point nobody can trade the NXTcash asset.

User now has all that is needed to redeem the NXTcash in the private files from the minting process. For privacy, he copies it to a flash drive and goes to a public data center. From there he starts a NXTcash spend process, which only requires the private data on the flash drive and designates a brand new NXT acct to receive the NXTcash asset. Now the NXTcash asset can trade and the gateway would always have a minimum bid of 1:1 so the original amount spent is available (minus whatever fees)

This is certainly not as good as having it built into the protocol as it relies on the gateways being operational and also that the gateways will always have a 1:1 repurchase bid in Asset Exchange. Also, the NXTcash trading on AE is not anonymous. This actually might really help avoid any stigma attached to using this tech. Only if you went out of your way to redeem the NXTcash on a different computer will you have true anonymity.

James

P.S. I will be offline all day, but I will try to get a DOGE test released before the weekend.
legendary
Activity: 1890
Merit: 1086
Ian Knowles - CIYAM Lead Developer
Here is the source code to my simulator:

Code:
#include
#include
#include

#include
#include
#include
#include

//#define USE_LOG

#define NUM_DAYS 1
//#define NUM_YEARS 100

//#define PREVENT_IMMEDIATE_REPEAT

//#define SHOW_WINNERS
//#define SHOW_WINNERS_WEIGHT

using namespace std;

#ifndef NUM_YEARS
const size_t c_num_blocks = 1440 * NUM_DAYS;
#else
const size_t c_num_blocks = 1440 * 365 * NUM_YEARS;
#endif

int main( )
{
#ifdef SHOW_WINNERS
   string winners;
#endif
   vector< int > wins;
   vector< int > streaks;
   vector< int > balances;
   vector< int > best_streak;

   vector< int > combined;
   vector< double > weights;

   int combined_streak = 0;
   int best_combined_streak = 0;

   balances.push_back( 10 );
   balances.push_back( 10 );
   balances.push_back( 10 );
   balances.push_back( 10 );
   balances.push_back( 10 );
   balances.push_back( 50 );

   srand( ( unsigned int )time( 0 ) );

   for( size_t i = 0; i < balances.size( ); i++ )
   {
      wins.push_back( 0 );
      weights.push_back( 0 );
      streaks.push_back( 0 );
      combined.push_back( 0 );
      best_streak.push_back( 0 );
   }

   size_t last_winner = 0;
   for( size_t blocks = 0; blocks < c_num_blocks; blocks++ )
   {
      double total_weight = 0;
      for( size_t i = 0; i < weights.size( ); i++ )
      {
#ifndef USE_LOG
         weights[ i ] = ( rand( ) % 1000 ) * balances[ i ];
#else
         weights[ i ] = ( rand( ) % 1000 ) * log( ( double )balances[ i ] );
#endif
         total_weight += weights[ i ];
      }

      size_t winner = 0;
      size_t runner_up = 0;
      double best_target = 0;
#ifdef PREVENT_IMMEDIATE_REPEAT
      double second_best_target = 0;
#endif

      for( size_t i = 0; i < balances.size( ); i++ )
      {
         double adjusted_weight = weights[ i ] * 1000 / total_weight;

         if( adjusted_weight > best_target )
         {
            winner = i;
            best_target = adjusted_weight;
         }
#ifdef PREVENT_IMMEDIATE_REPEAT
         else if( adjusted_weight > second_best_target )
         {
            runner_up = i;
            second_best_target = adjusted_weight;
         }
#endif
      }

#ifdef PREVENT_IMMEDIATE_REPEAT
      if( winner == last_winner )
         winner = runner_up;
#endif

#ifdef SHOW_WINNERS
      winners += ( char )( 'a' + winner );
#  ifdef SHOW_WINNERS_WEIGHT
      ostringstream osstr;
      osstr << best_target;
      winners += "(" + osstr.str( ) + ")";
#  endif
#endif
      ++wins[ winner ];

      if( winner != balances.size( ) - 1 )
      {
         ++combined_streak;
         if( combined_streak > best_combined_streak )
            best_combined_streak = combined_streak;
      }
      else
         combined_streak = 0;

      if( winner == last_winner )
      {
         ++streaks[ winner ];
         if( streaks[ winner ] > best_streak[ winner ] )
            best_streak[ winner ] = streaks[ winner ];
      }
      else
         streaks[ winner ] = 0;

      last_winner = winner;
   }

   cout << "blocks = " << c_num_blocks << endl;

   for( size_t i = 0; i < balances.size( ); i++ )
      cout << ( char )( 'a' + i ) << ": " << balances[ i ] << endl;

#ifdef SHOW_WINNERS
   cout << winners << endl;
#endif
   for( size_t i = 0; i < wins.size( ); i++ )
      cout << "wins( " << ( char )( 'a' + i ) << " ) = " << wins[ i ] << endl;

   for( size_t i = 0; i < best_streak.size( ); i++ )
      cout << "best_streak( " << ( char )( 'a' + i ) << " ) = " << ( best_streak[ i ] + 1 ) << endl;

   cout << "best_combined_streak = " << best_combined_streak << endl;
}
full member
Activity: 168
Merit: 100
who can refute my idea?

Try writing your idea in math or in a simulator rather than just trying to ask people to "refute" it.




leasing forging power of a account to another account to create pools

1.000.000.000 Nxt Coin
100.000 Nxt Coin per pool

John account  90.000 Nxt 0 Node forging
Mary account  9.900 Nxt 0 Node forging
Bob account  100 Nxt 0 Node forging


Total pool 100.000 Nxt 1 Node forging
Total Nodes forging 1

Chance to forge 0,0001
rate forging 1440 blocs per day
52,6 Blocs per year
aprox 1 Bloc per week

1.000.000.000 Nxt Coin
100.000 Nxt Coin per pool
10.000 Nodes forging




Sharing fees

1.000.000.000 Nxt Coin
100.000 Nxt Coin per pool

John account  90.000 Nxt 1 Node Forging
Mary account  9.900 Nxt 1 Node Forging
Bob account  100 Nxt 1 Node Forging

Total pool 100.000 Nxt
Total Nodes forging 3

Chance to forge 0,0001
rate forging 1440 blocs per day
52,6 Blocs per year
aprox 1 Bloc per week

1.000.000.000 Nxt Coin
100.000 Nxt Coin per pool
30.000 Nodes forging. if there are only three accounts linked to the pool

hero member
Activity: 910
Merit: 1000
I hope this is the fatal flaw!  Shocked Shocked Shocked
legendary
Activity: 1890
Merit: 1086
Ian Knowles - CIYAM Lead Developer
People have been wondering about some of the figures that my simulator has come up with so far - but there is actually a much worse picture here than I have so far shown as my simulator has been using "log(balance)" rather than just "balance" as the "stake multiplier".

So get ready for something that approaches more closely how Nxt actually works as it does not use log(balance):

blocks = 1440
a: 10
b: 10
c: 10
d: 10
e: 10
f: 50
wins( a ) = 48
wins( b ) = 50
wins( c ) = 50
wins( d ) = 41
wins( e ) = 52
wins( f ) = 1199
best_streak( a ) = 2
best_streak( b ) = 2
best_streak( c ) = 2
best_streak( d ) = 2
best_streak( e ) = 2
best_streak( f ) = 49
best_combined_streak = 3

In particular pay attention to the figure for "f" in regards to both "wins" and its "best streak".
Jump to: