Bitcoin Forum
June 26, 2024, 08:16:57 AM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
  Home Help Search Login Register More  
  Show Posts
Pages: « 1 ... 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 [185] 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 ... 334 »
3681  Alternate cryptocurrencies / Altcoin Discussion / Re: Nxt :: Automated Transactions (AT) - progress and discussion on: February 27, 2014, 10:21:51 AM
As I understand, Ian's writing a virtual machine (VM) for ATs. That means a place set aside for ATs to perform their calculations, and that means ATs won't be allowed to interfere with the rest of your computer. I think ATs will also only be allowed to send transactions from the account that they're "assigned" to, so that's another good restriction.

Pretty close - certainly an AT won't be able to "damage" the forger's computer (even if it has an "infinite loop" coded it is of zero concern) but at this stage I hadn't planned restrictions on which account an AT could send money to (although it is perhaps unlikely that we would be letting it say iterate all accounts).

In general the practice of spamming should be taken care of by the fact that all txs require a fee (and we could even increase those fees for txs that originate from an AT). Also understand that the Nxt AT won't be talking to the Nxt API but to a Nxt AT API to keep it safely "sand-boxed".
3682  Alternate cryptocurrencies / Altcoin Discussion / Re: Nxt :: Automated Transactions (AT) - progress and discussion on: February 27, 2014, 09:28:19 AM
Anyway, I have not the skills if those things they are saying are true or just bullshit as usual.

And that is always the problem with that part of the forum as basically no-one with real technical skills posts there (no point as they wouldn't understand a word of it).

But it isn't surprising that the "Turing complete" buzz word has caught some attention (as I think has DAC - and who knows - maybe they'll even end up posting questions about Nxt AT in the coming months).

Smiley
3683  Alternate cryptocurrencies / Announcements (Altcoins) / Re: NXT :: descendant of Bitcoin - Updated Information on: February 27, 2014, 08:58:56 AM
So what do you suggest, something like using log or sqrt for forging power?

I would advocate for basically a "fixed limit" (e.g. 1% of the total amount of NXT) as being all the power you can have under 1 account (including accounts that have had forging rights allocated to them).

Any further NXT would simply not help you (encouraging the pool/account to split funds into another pool/account).
3684  Alternate cryptocurrencies / Altcoin Discussion / Re: Nxt :: Automated Transactions (AT) - progress and discussion on: February 27, 2014, 08:54:58 AM
People on Speculation forum talking about Turing Completeness:

There's a good reason I *ignore* the Speculation part of this forum.
3685  Alternate cryptocurrencies / Announcements (Altcoins) / Re: NXT :: descendant of Bitcoin - Updated Information on: February 27, 2014, 08:49:45 AM
Okay - so with TF apparently an unknown quantity that may or may not appear in the future I am now prepared to make a recommendation of a different way that we could tackle preventing people "using what TF we have" in order to "game the system" (actually similar to something I had suggested earlier on before I did some analysis).

As I have been unable to work out a way to get better results by adding some sort of simulated "punishment" what is most relevant is that (my admittedly far from perfect) simulator showed that 6 small grouped accounts didn't manage to get more than 2 consecutive blocks over 10 years.

So how could we take advantage of this idea and at the same time stop the "whales from gaming"?

I think the simplest and probably most salable idea is our that the future will not be centralised.

Basically if we limit the effective forging *power* of any pool or individual to a maximum allowable percentage (regardless of actual NXT balance) then we will force people to split up their hoards into small chunks managed by separate pools.
3686  Alternate cryptocurrencies / Announcements (Altcoins) / Re: NXT :: descendant of Bitcoin - Updated Information on: February 27, 2014, 06:14:18 AM
Although the algo still doesn't match what is really going on (if anyone else can make it more correct then please modify it and post the updated results and source) I thought I just do one "slightly more realistic" 10 year analysis:

blocks = 5256000
a = 1
b = 1
c = 1
d = 1
e = 1
f = 1
g = 1
h = 1
i = 1
j = 1
k = 5
l = 5
m = 5
n = 5
o = 10
p = 10
q = 10
r = 10
s = 30
wins( a ) = 1159
wins( b ) = 1174
wins( c ) = 1150
wins( d ) = 1183
wins( e ) = 1193
wins( f ) = 1169
wins( g ) = 1143
wins( h ) = 1177
wins( i ) = 1115
wins( j ) = 1205
wins( k ) = 175337
wins( l ) = 175600
wins( m ) = 174960
wins( n ) = 174629
wins( o ) = 580246
wins( p ) = 579058
wins( q ) = 580492
wins( r ) = 578307
wins( s ) = 2225703
best_streak( a ) = 2
best_streak( b ) = 1
best_streak( c ) = 1
best_streak( d ) = 1
best_streak( e ) = 1
best_streak( f ) = 1
best_streak( g ) = 1
best_streak( h ) = 2
best_streak( i ) = 2
best_streak( j ) = 2
best_streak( k ) = 5
best_streak( l ) = 4
best_streak( m ) = 5
best_streak( n ) = 4
best_streak( o ) = 7
best_streak( p ) = 7
best_streak( q ) = 6
best_streak( r ) = 6
best_streak( s ) = 19
best_combined_streak = 2
(combined the first 6 accounts)

With this simulation we see a combined streak of only 2 when we have grouped together a bunch of very small stakeholders.

I then also tried simulating the idea that forgers will be penalised with higher stake holders being penalised more often but every way I try that I simply end up with worse results (in terms of streaks) like this:

blocks = 5256000
a = 1
b = 1
c = 1
d = 1
e = 1
f = 1
g = 1
h = 1
i = 1
j = 1
k = 5
l = 5
m = 5
n = 5
o = 10
p = 10
q = 10
r = 10
s = 30
wins( a ) = 22634
wins( b ) = 21929
wins( c ) = 21654
wins( d ) = 21987
wins( e ) = 21739
wins( f ) = 21888
wins( g ) = 21492
wins( h ) = 21921
wins( i ) = 21824
wins( j ) = 21706
wins( k ) = 324659
wins( l ) = 318268
wins( m ) = 317664
wins( n ) = 318776
wins( o ) = 635268
wins( p ) = 640399
wins( q ) = 631070
wins( r ) = 630736
wins( s ) = 1220386
penalised( a ) = 62
penalised( b ) = 63
penalised( c ) = 70
penalised( d ) = 53
penalised( e ) = 66
penalised( f ) = 62
penalised( g ) = 61
penalised( h ) = 66
penalised( i ) = 54
penalised( j ) = 57
penalised( k ) = 934
penalised( l ) = 983
penalised( m ) = 976
penalised( n ) = 963
penalised( o ) = 1471
penalised( p ) = 1454
penalised( q ) = 1485
penalised( r ) = 1479
penalised( s ) = 2012
best_streak( a ) = 3
best_streak( b ) = 3
best_streak( c ) = 3
best_streak( d ) = 3
best_streak( e ) = 3
best_streak( f ) = 3
best_streak( g ) = 4
best_streak( h ) = 3
best_streak( i ) = 4
best_streak( j ) = 3
best_streak( k ) = 9
best_streak( l ) = 8
best_streak( m ) = 7
best_streak( n ) = 7
best_streak( o ) = 22
best_streak( p ) = 20
best_streak( q ) = 18
best_streak( r ) = 13
best_streak( s ) = 39
best_combined_streak = 14
(combined the first 6 accounts)

So although it is admittedly not an accurate simulation in my opinion getting large accounts split up into smaller accounts and having lots of pools would probably do a better job of "securing" the blockchain than introducing penalties at all.

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 <ctime>
#include <cmath>
#include <cstdlib>

#include <string>
#include <vector>
#include <sstream>
#include <iostream>

//#define NUM_DAYS 1
#define NUM_YEARS 10

#define PENALISE_HIGHER_STAKE
//#define PREVENT_IMMEDIATE_REPEAT

//#define SHOW_WINNERS
//#define SHOW_WINNERS_WEIGHT

using namespace std;

const int c_combined_proportion = 3;

#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 > penalised;
   vector< int > penalising;
   vector< int > best_streak;

   vector< int > combined;
   vector< long > weights;

   long total_balance = 0;

   int combined_streak = 0;
   int best_combined_streak = 0;

   balances.push_back( 1 );
   balances.push_back( 1 );
   balances.push_back( 1 );
   balances.push_back( 1 );
   balances.push_back( 1 );
   balances.push_back( 1 );
   balances.push_back( 1 );
   balances.push_back( 1 );
   balances.push_back( 1 );
   balances.push_back( 1 );
   balances.push_back( 5 );
   balances.push_back( 5 );
   balances.push_back( 5 );
   balances.push_back( 5 );
   balances.push_back( 10 );
   balances.push_back( 10 );
   balances.push_back( 10 );
   balances.push_back( 10 );
   balances.push_back( 30 );

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

   for( size_t i = 0; i < balances.size( ); i++ )
   {
      total_balance += balances[ i ];

      wins.push_back( 0 );
      weights.push_back( 0 );
      streaks.push_back( 0 );
      combined.push_back( 0 );
      penalised.push_back( 0 );
      penalising.push_back( 0 );
      best_streak.push_back( 0 );
   }

   size_t last_winner = 0;
   for( size_t blocks = 0; blocks < c_num_blocks; blocks++ )
   {
      long total_weight = 0;
      for( size_t i = 0; i < weights.size( ); i++ )
      {
         if( penalising[ i ] )
         {
            --penalising[ i ];
            weights[ i ] = 0;
         }
         else
         {
            int divisor = rand( ) % 10;

            if( divisor == 0 )
               ++divisor;

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

            if( weights[ i ] == 0 )
               ++weights[ i ];

            total_weight += weights[ i ];
         }
      }

      if( total_weight == 0 )
         ++total_weight;

      size_t winner = 0;
      size_t runner_up = 0;
      long best_target = 0;
      long second_best_target = 0;

      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;
         }
         else if( adjusted_weight > second_best_target )
         {
            runner_up = i;
            second_best_target = adjusted_weight;
         }
      }

#ifdef PENALISE_HIGHER_STAKE
      if( best_target == 350 ) // an above median value
      {
         ++penalised[ winner ];
         penalising[ winner ] = 1440;
      }
#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( ) / c_combined_proportion )
      {
         ++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;

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

   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;
   cout << "(combined the first " << ( balances.size( ) / c_combined_proportion ) << " accounts)" << endl;
}
3687  Alternate cryptocurrencies / Announcements (Altcoins) / Re: NXT :: descendant of Bitcoin - Updated Information on: February 26, 2014, 06:49:43 PM
But mixing conceptually different worst-case scenarios will obscure causes.

Your welcome to fix it (as stated - I am done with it - you have the source code now go and *code* rather than reply to posts).
3688  Alternate cryptocurrencies / Announcements (Altcoins) / Re: NXT :: descendant of Bitcoin - Updated Information on: February 26, 2014, 06:45:57 PM
We need a probability distribution for these streaks. Absolute numbers are irrelevant.

To be blunt - why don't you just fix it then (instead of asking me to do more work on it)?
3689  Alternate cryptocurrencies / Announcements (Altcoins) / Re: NXT :: descendant of Bitcoin - Updated Information on: February 26, 2014, 06:43:41 PM
I have no freakin' clue why you come to this conclusion. I am extremely satisfied with and thankful for your contribution and we all discussed the algo today. Why do you suddenly think no one wants this?

Thanks for the kind words - it is perhaps a combination of being tired, not getting anyone else to work on the simulation and just getting more and more suggestions for alternative ways to do things when we don't already even know what it is doing that has led to me needing to "give it a rest".
3690  Alternate cryptocurrencies / Altcoin Discussion / Re: Nxt :: Automated Transactions (AT) - progress and discussion on: February 26, 2014, 06:38:07 PM
Yeah, AT randomness is difficult, so perhaps an Escrow Coin Asset business would be better suited to handle.

We can possibly achieve it by using the "weight" of a block in the future.

Unfortunately as per my attempts to do some statistical analysis I don't if anyone will actually be able to provide any real data upon "how random" such a result would be (so am not thinking the "lottery" use case is now such a great one).
3691  Alternate cryptocurrencies / Announcements (Altcoins) / Re: NXT :: descendant of Bitcoin - Updated Information on: February 26, 2014, 06:29:12 PM
One final thing I will say about the (lack of proper) statistical analysis is that for my own involvement in Nxt I would rather be paid in BTC (if I am to be paid anything at all).

I have read proper statistical papers (such as created by Meni) with sound math describing all of the possible attacks upon Bitcoin and I am much more satisfied with that then the "just trust BCNext's algorithm argument" who himself btw actually stated "don't trust me".

It seems that things like "proper analysis" are not things that this community wants to do or even hear about. Sad
3692  Alternate cryptocurrencies / Altcoin Discussion / Re: Nxt :: Automated Transactions (AT) - progress and discussion on: February 26, 2014, 06:20:29 PM
I think the problem could perhaps only be solved by some sort of more "random" process (which is not simple with an AT as it is not easy for an AT to actually get *random* data).

I am guessing if we could get enough randomness then our "whale lover's" donation (and I am not against the whales - so replace them with any other creature you like or dislike) could actually be just as likely to go to the "whale eater's" foundation.

That I guess would stop the money going into the "void" but keep anyone from having an "agenda" to not release funds.
3693  Alternate cryptocurrencies / Announcements (Altcoins) / Re: NXT :: descendant of Bitcoin - Updated Information on: February 26, 2014, 06:09:14 PM
So I think I am about done with trying to simulate our blockchain (it is too tiring and this is not my area of expertise).

If someone else is interested to take over then you have my source code and at least some mathematical analysis has been done on the "real" algorithm (without penalty being considered).

Unfortunately the result is that "we just don't know" if the Nxt TF algo is going to work at this stage (and we have not got any idea if anything else will work better).

Sorry I couldn't provide a better analysis but maybe others can improve on this.
3694  Alternate cryptocurrencies / Announcements (Altcoins) / Re: NXT :: descendant of Bitcoin - Updated Information on: February 26, 2014, 06:02:02 PM
@all: Where did you obtain your knowledge regarding the used algorithm in Nxt?

I tried my best to understand the Java source code that was released (and will readily admit I've failed to "grok" it).

It is not written in a way that makes it easy to follow at all and I am not a Java programmer (I do C++).
3695  Alternate cryptocurrencies / Announcements (Altcoins) / Re: NXT :: descendant of Bitcoin - Updated Information on: February 26, 2014, 06:00:22 PM
Here I would agree with BloodyRookie, since all targets remain proportional as time grows.

In that case I am not sure how to fix my model - we seem to have multiple communication problems (native language, level of math and computer language).

Sad
3696  Alternate cryptocurrencies / Announcements (Altcoins) / Re: NXT :: descendant of Bitcoin - Updated Information on: February 26, 2014, 05:51:05 PM
The time in the nxt algorithm doesnt decide who will forge, just when he will forge the block.

That is *not* my current understanding (and why my updated model now seems to match the *real* stats).

You might want to check that (my initial model made that assumption and CfB pointed me to one that did what my one is now doing).

Again - feel free to change my algo and publish the new algo and results.

It is just a simulation - if you can make it *better* then that would be appreciated (it isn't easy to get the simulation to be even reasonably close to reality but it does still serve a purpose to at least look at "average" vs. "worst cases" in a purely statistical sense).
3697  Alternate cryptocurrencies / Announcements (Altcoins) / Re: NXT :: descendant of Bitcoin - Updated Information on: February 26, 2014, 05:49:11 PM
It's just that when the inspiration comes I have to release it

I understand and your interest is appreciated - we just have to do this stuff "step by step" and most importantly "get it right".

Look at the situation with Mt. Gox at the moment - mistakes can have some rather hefty consequences (am glad that I am not Mark Karpeles).
3698  Alternate cryptocurrencies / Announcements (Altcoins) / Re: NXT :: descendant of Bitcoin - Updated Information on: February 26, 2014, 05:46:34 PM

Now this is the kind of thing that is *valuable* (more so than all the "suggestions" about different ways to do things).

I am grateful to @mthcl for actually "doing some math" for us and hope that he will be able to help us to analyse things further in order to make some "scientific decisions" (rather than "populist" ones).

EDIT: If some of the "whales" could spare some of their NXT then I would hope they would consider sending some his way.
3699  Alternate cryptocurrencies / Altcoin Discussion / Re: Nxt :: Automated Transactions (AT) - progress and discussion on: February 26, 2014, 05:41:28 PM
I like your approach of sending to void (perhaps genesis block or Nxt bounty fund), so buyer is committed regardless and seller has no incentive to scam.

Thanks - after some thought it actually is probably better to always send to the void than to anything else.

(someone who "loves the whales" but "hates X tee-shirts" could always make an order for a tee-shirt and then just send the money to the "help the whales" organisation claiming to have been not sent a tee-shirt)
3700  Alternate cryptocurrencies / Announcements (Altcoins) / Re: NXT :: descendant of Bitcoin - Updated Information on: February 26, 2014, 05:32:45 PM
I'm not a developer.
I can not put my ideas into a program

So I hope you can understand that this isn't actually really helping at this stage.

Maybe once we have a better understanding of what we have and what we are expecting to have when TF is completed we can decide if we want to change that and then model such an alternative.

Reasonable?
Pages: « 1 ... 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 [185] 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 ... 334 »
Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!