Author

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

sr. member
Activity: 258
Merit: 250
Alright so i need a little help understanding something. I have two servers running on two separate computers. Both servers have the same account unlocked. I know the answer is going to be no, but i just want to understand how and why.. Does this double my chances of forging a block?

it doesnt, and in fact I believe CfB has stated in the past that this is a very bad practice, for reasons I cant understand though.  does anyone know why this is bad?  And if its so bad, what do we need to work on to mitigate the threat?
Yeah id love to see the reasoning. Im hoping we can get some insight. Thank you for the reply, ill stick to just one server then.

It doesn't double the chance to forge a block, but when you do forge a block, you will do it twice and thus, you are creating a fork.

This seems to be a serious attack possibility.  what happens if a whale or pool operator goes rogue and starts forging from 100 different public VPSs?
Yes, this seems to be a huge flaw with NXT..
full member
Activity: 196
Merit: 100
** Cryptsy Update **

I just heard back from Paul (met him at the Miami Bitcoin Conference), they are looking to implement Nxt in the next few weeks.
I talked with Big Vern @Skype and I introduced CfB to him - he said he will talk to Paul about it (to get help from CfB if needed).

Fantastic. I did a virtual introduction with all the different devs including CfB and Jean-Luc a few weeks ago as well... they have the resources, now it's just a matter of finding time to implement. Nxt keeps taking another step.

Let me make a suggestion to keep this ball rolling.  We should ask the Cryptsy folks to document what was required to get NXT plugged into their system.  Then we should turn right around to allwelder or some of the other Chinese NXT members and see that this info from Cryptsy gets communicated to BTX38.com in China.  We need to be on both of these exchanges as soon as possible.  It is the only way we are going to get exposure to a new pool of capital to buy NXT and get our exchange volume back up.  
full member
Activity: 238
Merit: 100
Maybe, I missed that part: why are streaks dangerous?

Without penalty or some other approach the forger who gets a long streak can "undo that many confirmations" by building a "secret" chain.


you know, im really embarassed to have to ask this question, but can you go into even more detail here?  IM just not seeing it
full member
Activity: 238
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.


how many accounts are you running in each simulation instance?  Just a few will not cut it and is not a good representation of how TF works in the wild.  See the source code transparent forging thread, I believe it was, for more info on this.  You need to model as many accounts as possible, I would say at least 100 per simulation run.
full member
Activity: 196
Merit: 100
We are in war with Ethereum (for those who have not understood it yet).

+1.  +1.  +1.

Etherium had a HUGE recognition and visibility advantage over NXT.  We are going to have quite a hard fight to overcome that.  I predict when they finally do come out, they will instantly be over NXT on coinmarketcap.    

What's their ETA now?

Has anyone been in contact with any of the whales that are not spending?

They have  a keynote speaker spot at Texas Bitcoin Conference on March 5.  I'll report.

Is there going to be a speaker for nxt? Or were the documents sent too late?

I have been assigned to be on the "Alt Currencies" panel.  I was prepared to be a speaker and lobbied hard to get on their roster.  In the end, I don't think that the timing / delay in sending in the registration documents had anything to do with NXT not getting a speaker slot.  I think it all comes down to money.  All the speakers are all either really big in the bitcoin world or they paid premium fees to be speakers.  NXT officially bought in at the conference "Supporter" level, which is at the bottom rung of the ladder and does not specifically state that you get to speak.   Plus, Salsa negotiated our gig as "Supporter" for only $1000 instead of the usual $2500.  We got a bargain, but scraping in on the bottom does not get you put in front of the crowd holding a microphone.
legendary
Activity: 1092
Merit: 1010

If we need speakers, some more techy people should step forward. We have asked for them more than once, because most of us know we are limited in that, but so far none has come forward.


Ahem.   Smiley

Not aimed at you AT ALL! I really hope you don't think that.

I mean for all the other conferences. You were already slated for this one.

But let's face it: it's a fact we don't have enough people with the knowledge to field questions from smart people to answer them indepth.

I can hold a general stirring speech, but that would be just a lot of hot air as far as a technical audience is concerned and is a weak point for conferences.

Even joefox has already said he doesn't consider himself to be knowledgeable enough.

So, once again: please step up and help out. We shóuld have a technical expert at conferences! I know how scary it can be, but we NEED you people Smiley

It's also fun and there is grub to be had!
full member
Activity: 238
Merit: 100
Alright so i need a little help understanding something. I have two servers running on two separate computers. Both servers have the same account unlocked. I know the answer is going to be no, but i just want to understand how and why.. Does this double my chances of forging a block?

it doesnt, and in fact I believe CfB has stated in the past that this is a very bad practice, for reasons I cant understand though.  does anyone know why this is bad?  And if its so bad, what do we need to work on to mitigate the threat?
Yeah id love to see the reasoning. Im hoping we can get some insight. Thank you for the reply, ill stick to just one server then.

It doesn't double the chance to forge a block, but when you do forge a block, you will do it twice and thus, you are creating a fork.

This seems to be a serious attack possibility.  what happens if a whale or pool operator goes rogue and starts forging from 100 different public VPSs?
legendary
Activity: 1890
Merit: 1086
Ian Knowles - CIYAM Lead Developer
What are the assumptions now compared to earlier? (In english please Wink)

Okay - so before I was just randomly punishing 1 account every day - but now I am punishing 4 out of 11 (in reality the number being punished will be closer to total accounts / 1440) every day.

From what I understand the punishment will effectively apply "according" to your stake - I need to play with that more but am thinking you more or less are just going to either favour large streaks by a single large stake holder or by a pool of small stake holders.

Probably favoring the larger stake holders is better - also in reality if people are "not broadcasting blocks" then they are "losing fees" by just doing that.
full member
Activity: 196
Merit: 100

If we need speakers, some more techy people should step forward. We have asked for them more than once, because most of us know we are limited in that, but so far none has come forward.


Ahem.   Smiley
hero member
Activity: 750
Merit: 500
www.coinschedule.com
I have updated the list of NXT Service Providers here: https://bitcointalk.org/index.php?topic=412516.new#new

What are we missing in the list?

The list is supposed to show online services that provide some kind of programmatic functionality to NXT users.
hero member
Activity: 910
Merit: 1000
I made a few more tweaks to the simulator for "penalising" that I think come a little closer to how it will work in reality and now have this result:

What are the assumptions now compared to earlier? (In english please Wink)
legendary
Activity: 1890
Merit: 1086
Ian Knowles - CIYAM Lead Developer
I made a few more tweaks to the simulator for "penalising" that I think come a little closer to how it will work in reality and now have this result:

blocks = 5256000
a: 5
b: 5
c: 5
d: 5
e: 5
f: 5
g: 5
h: 5
i: 5
j: 5
k: 50
wins( a ) = 168532
wins( b ) = 168436
wins( c ) = 168653
wins( d ) = 168924
wins( e ) = 168386
wins( f ) = 167850
wins( g ) = 167890
wins( h ) = 166853
wins( i ) = 167323
wins( j ) = 167573
wins( k ) = 3575580
best_streak( a ) = 4
best_streak( b ) = 4
best_streak( c ) = 4
best_streak( d ) = 5
best_streak( e ) = 4
best_streak( f ) = 3
best_streak( g ) = 4
best_streak( h ) = 4
best_streak( i ) = 4
best_streak( j ) = 4
best_streak( k ) = 40
best_combined_streak = 15

Which I think is perhaps looking a lot better in terms of the "combined streak" figure. The "best streak" is a bit misleading in this case so also not likely to be a problem in reality (will have to try and make further tweaks to be sure).

Code:
// Copyright (c) 2014 CIYAM Developers
//
// Distributed under the MIT/X11 software license, please refer to the file license.txt
// in the root project directory or http://www.opensource.org/licenses/mit-license.php.

#include
#include
#include

#include
#include
#include
#include

#define NUM_DAYS 1
#define NUM_YEARS 10

//#define USE_PENALISING

//#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< long > weights;

   int combined_streak = 0;
   int best_combined_streak = 0;

   balances.push_back( 5 );
   balances.push_back( 5 );
   balances.push_back( 5 );
   balances.push_back( 5 );
   balances.push_back( 5 );
   balances.push_back( 5 );
   balances.push_back( 5 );
   balances.push_back( 5 );
   balances.push_back( 5 );
   balances.push_back( 5 );
   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 penalising1 = 0;
   size_t penalising2 = 0;
   size_t penalising3 = 0;
   size_t last_winner = 0;
   for( size_t blocks = 0; blocks < c_num_blocks; blocks++ )
   {
#ifdef USE_PENALISING
      if( blocks % 1440 == 0 )
      {
         penalising1 = rand( ) % balances.size( );
         penalising2 = rand( ) % balances.size( );
         penalising3 = rand( ) % balances.size( );
         penalising4 = rand( ) % balances.size( );
      }
#endif

      long total_weight = 0;
      for( size_t i = 0; i < weights.size( ); i++ )
      {
         int divisor = rand( ) % 10;

         if( divisor == 0 )
            ++divisor;

         weights[ i ] = ( rand( ) % 10000 ) * ( balances[ i ] / divisor );

#ifdef USE_PENALISING
         if( i == penalising1 || i == penalising2 || i == penalising3 || i == penalising4 )
            weights[ i ] = 0;
#endif

         total_weight += weights[ i ];
      }

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

      for( size_t i = 0; i < balances.size( ); i++ )
      {
         long 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: 178
Merit: 100
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



LOL! You are GREAT!
legendary
Activity: 1120
Merit: 1000
Yeah, I´ll buy a lot of Nxt and then...

Participate in NOX?

Emule might just participate in NOX.

I actually like Emule and his annoyance here, because he's bringing some degree of reality-checking and some ass-kicking.

+ he's still around = he cares. I'm not sure he's trolling because he enjoys it. It's probably his way of trying to make things happen.
newbie
Activity: 23
Merit: 0
** Cryptsy Update **

I just heard back from Paul (met him at the Miami Bitcoin Conference), they are looking to implement Nxt in the next few weeks.
I talked with Big Vern @Skype and I introduced CfB to him - he said he will talk to Paul about it (to get help from CfB if needed).

that's good news!
hero member
Activity: 687
Merit: 500
Am pretty sure that whether you pick the "highest" or "lowest" is not relevant - so although not identical in coding it is statistically equivalent.

If you'd like to change it and try please post the results (especially if that percentages or "lucky runs" change much).


Right, I just calculated the probability and (at least for two accounts) it does not make a difference.
legendary
Activity: 1092
Merit: 1010
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 once more.  Smiley
full member
Activity: 238
Merit: 100
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've done it a week ago already, but heck I will register another account right away with my second e-mail.. Smiley
legendary
Activity: 1890
Merit: 1086
Ian Knowles - CIYAM Lead Developer
@CIYAM: Is there a special reason for taking this approach

Code:
        int divisor = rand( ) % 10;

         if( divisor == 0 )
            ++divisor;

         weights[ i ] = ( rand( ) % 10000 ) * ( balances[ i ] / divisor );


instead of taking an approach equivalent to the nxt implementation?
Something like

Code:
        weights[ i ] = ( rand( ) % 10000 ) / balances[ i ];


Am pretty sure that whether you pick the "highest" or "lowest" is not relevant - so although not identical in coding it is statistically equivalent.

If you'd like to change it and try please post the results (especially if that percentages or "lucky runs" change much).
full member
Activity: 266
Merit: 100

Greed could be the fatal flaw, if that 50M accounts persist to hoard we are all doomed, simply because that accounts don’t need a higher price to sell, they get rich anyway, no matter what the price is.

I wish we could shot them accounts down coz they only make us look bad and people who own them are from the greediest people ever seen, they hurt nxt and will destroy it.

How rich do you want to be 1M, 10M, 50M, it’s just disgusting when you think of it.

Honestly: I couldn’t care less if NXT was worth 0, just for the fun them accounts have also 0.

Who knows, maybe a good clone will outlive NXT and them 50M accounts if they don’t start spreading the wealth.


Let's send some arbitrary messages to those accounts asking them to help out!


We already did. I think they dont even know how it works and they don't even give a damn how it works to.

Well...treat them like lostNxts (blackNxt, deadNxt or whatever they are called now).
Maybe the owner of the account already died. Or is on coma and doen´t care about it. I am pretty sure that they´d already sold some of them if they were alive Smiley


My fear is that some are second or third accounts and the whales dont even have the time to sell + there is not enough volume on the market to sell.

I bet this is correct. It really doesn't matter as long as they don't dump them in mass, which would really not be in their own interest. Guess we have to trust them and that is just the way it is.  Really, if you think about it the same situation exists in the Bitcoin market as well as traditional currency markets. At any rate, the asset exchange provides a means of protection against this if it is used in the right way.
Jump to: