Bitcoin Forum
May 14, 2024, 04:51:38 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
  Home Help Search Login Register More  
  Show Posts
Pages: « 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 [37] 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 ... 96 »
721  Bitcoin / Development & Technical Discussion / Re: BitCrack - A tool for brute-forcing private keys on: February 12, 2019, 05:03:17 PM
Is BitCrack have the option to recover address from a given 64 characters hex private key 'cause i have a paper wallet with faded private key but the address is still instact, it's look like this
Code:
privkey: *******4A875F34E5B11FA0453782E17F1B6FCBC77921614364E4AF62C7EF131
address (uncompressed): 1EGA57u7gQQTRgAy3D9q3n52Nw********
it's only lost 7 characters but seem possible to recover


(2^4) ^ 7 = 2^28 combinations, it is pretty simple to generate that number of addresses. But these keys are not consecutive, then you have to modify BitCrack or vanitygen. A Cpu is enough, 2^28 is a small number.
722  Bitcoin / Bitcoin Technical Support / Re: Fastest way of generating addresses for millions of private keys on: February 12, 2019, 04:53:06 PM
I have now generated every possible combinations from all 14 words. It took lots of time and lots of programming.

Now I really need your help in order to get this into addresses. I want a efficient way to input seeds and get addresses from them.

Any takers? I will make sure there will be a reward for contribution. I am really tired of this right now  Sad

If you want I can give you a program that works like that:

generate_address file_input file_output

where file_input contains private key in hex format and file_output contains addresses in hex format.

I have to modify my program that generates only consecutive addresses.


What kind of speed do you need? It is enough Python or you need a C program?
723  Bitcoin / Bitcoin Technical Support / Re: Fastest way of generating addresses for millions of private keys on: February 03, 2019, 06:59:42 AM
Damn I wish I was more fluent in programming. Right now I am using the blockchain.info API to check balances, which is totaly retarded. As you said, I need to check all used addresses on the blockchain instead.
I was reading about crawling and saving all addresses from the blockchain? But there are over 300 million of those, so yes, I would need a bloom filter (as I understand it, it basically reduces size?)

So there are two approaches, either crawl the entire blockchain, and search through it every time.
Or crawl it to find the public key so I dont have to search through a database.


First, you have to look only at the UTXO set, you don't care about addresses used in the past and now empties

Updated at block # 547944   30/10/2018

 output               # addresses                       Tot bitcoin
                                                                                          
P2PKH                        18.453.794                    10.541.332  
P2SH                            3.865.985                      4.906.667  
P2PK                                 38.678                      1.759.927      
P2WPKH                           62.643                          126.738  
P2WSH                             18.662                            11.812    
MULTISIG 1-1                        357                                    0.056
MULTISIG 1-2                 142.354                             23.24      
MULTISIG 1-3                 205.226                             17.85        

TOT                          22.787.699                       17.346.536


so we are talking about 20 million, not 300.



With bloom filter the searching time becomes the neglegible part. If you have a list of all addresses (not base58 encoded) in UTXO

addresses.hex
Code:
0000000000000000000000000000000000000000
0000000000000000000000000000000000000001
0000000000000000000000000000000000000002
0000000000000000000000000000000000000003
0000000000000000000000000000000000000004
0000000000000000000000000000000000000005
0000000000000000000000000000000000000006
0000000000000000000000000000000000000007
0000000000000000000000000000000000000008
000000000000000000000000000000000000000a
0000000000000000000000000000000000000011
000000000000000000000000000000000000001a
0000000000000000000000000000000000000023
0000000000000000000000000000000000000064
0000000000000000000000000000000000000092
0000000000000000000000000000000000000100
0000000000000000000000000000000000000246
0000000000000000000000000000000000000258
000000000000000000000000000000000000028f
00000000000000000000000000000000000002fe
.......................................

you can use the program I linked to get from that list a 512 MB bloom filter called funds_h160.blf (addresses with funds)

First you have to download the program (I assume you use Linux) and compile it:

you can download it from https://github.com/ryancdotorg/brainflayer/archive/master.zip and unzip or use the 'git' command:

Code:
git clone https://github.com/ryancdotorg/brainflayer.git
cd brainflayer/
make

then run it

Code:
./hex2blf addresses.hex funds_h160.blf

[*] Initializing bloom filter...
[*] Loading hash160s from 'addresses.hex'  100.0%
[*] Loaded 18503292 hashes, false positive rate: ~2.162e-22 (1 in ~4.625e+21)
[*] Writing bloom filter to 'funds_h160.blf'...
[+] Success!


To perform a search in the bloom filter, suppose you have a list of 1000 addresses generated from 1000 private keys to check against the bloom filter:

Code:
for (uint16_t i = 0; i < 1000;  i++){
    
    if (bloom_chk_hash160(bloom, addresses[i])) {  //if there is a match between addresses[i] and one of the addresses in bloom filter
      
           printf("Found! Key number %08x\n" , i);
           exit();

    }
}

where the bloom_chk_hash160 function is defined here -> https://github.com/ryancdotorg/brainflayer/blob/master/bloom.h
724  Bitcoin / Bitcoin Technical Support / Re: Fastest way of generating addresses for millions of private keys on: February 02, 2019, 12:52:33 PM


I have accepted that this might take for ever, but I would love to get some pointers and help from the community, and I'll make sure to reward anyone who contributes to the solving of this problem.

Having 14 possible words of a 12 word seed makes 43 589 145 600 possible arrangements. Let's say 5% of those gives a correct checksum. That would be 2 179 457 280 combinations.
If I somehow managed to check 1000 addresses each second it would take at max a month to find the correct one. I recon it should be able to push that number. I am also fairly sure about some of the words, which should bring down the possible amount of addresses.

I am using btctools for Python at the moment. I have no idea if it should take this long to generate, on the other hand, when using sites as https://iancoleman.io/bip39/ it generates 20 publickeys in a second. I am sure it must be a faster way then the one I am using.

My method right now:
1. Generage huge lists of possible combinations of seeds, ex. oven rifle phrase planet dirt true cinnamon kick first echo thing excuse
2. Run through the list line by line and generate BIP32 root key ex. xprv9s21ZrQH143K3HKXZ8ZPebpXnQbWRsQeKnoUbu7BzMpgtym7ya8hPaF2dmFS621C2BMnvCb3qYj 4cL7GiVK1VNmnA7wxFtPmBT8U1xUW8D6
3. Derive the BIP44 address from this root key, ex. 1NF7rutG9zTiZ7HbYuqmik2Sbb8HwqJcqG
4. Check the given addresses against blockchain.

You don't know
1) the private key
2) the address?

If you have to check each address you generate against the blockchain, you need a bloom filter like in this program https://github.com/ryancdotorg/brainflayer

2 180 000 000 addresses are not too many.  Besides you can save the time of the encode58.
725  Local / Discussioni avanzate e sviluppo / Re: curve ellittiche e algoritmo ECDSA on: February 02, 2019, 11:46:40 AM
Si potrebbe chiedere agli admin del forum se possono abilitare qualcosa per scrivere equazioni matematiche.
L'html lo prevede ma nel forum non funzionano ...

https://www.tutorialspoint.com/html5/html5_mathml.htm

Potresti anche scrivere queste perle in un documento LaTex o, anche solo, in writer e pubblicare il pdf.

Ringrazio per le "perle" ma non esageriamo.

Ovviamente sarebbe l'ideale riscrivere tutto in LaTeX, ma diventerebbe ai miei occhi tutto troppo professionale, alla fine mi va bene scrivere le cose man mano che mi vengono in mente senza dovermi preoccupare troppo della forma. Si tratta di spunti, voglio buttare giù delle idee che possono tornare utili a me e a chi legge, non voglio scrivere un trattato o qualcosa di livello accademico, certo sarebbe comodo se il forum permettesse di inserire formule matematiche, ma qui hanno pensato solo a come inserire pezzi di codice, pazienza.

726  Local / Discussioni avanzate e sviluppo / Re: curve ellittiche e algoritmo ECDSA on: February 01, 2019, 05:27:11 PM
Se ti interessa e hai voglia, potresti usare questi tool che creano direttamente immagini dalle varie formule e operazioni (usano Latex come formato) così diventa più facile leggerle, magari non per tutto ma per alcune parti più importanti:

http://rogercortesi.com/eqn/index.php
http://www.sciweavers.org/free-online-latex-equation-editor

Le immagini create poi vanno caricate su qualche image hosting

Grazie per i link, in effetti sarebbe meglio, bisogna solo trovare tempo e voglia Smiley
727  Alternate cryptocurrencies / Altcoin Discussion / Re: about Brute-force missing private key in the end ! on: February 01, 2019, 03:42:40 PM
@arulbero thanks for the explanation but it seems like you made a small mistake here:
k*G, (k+4)*G, (k+8)*G, (k+12)*G   where k is the first possible key to check (k = f461....dca10)
In giant steps you pre-compute 0G, 1G, 2G, ..., (m-1)G. So in this case it seems you should be calculating kG, (k+1)G, (k+2)G, (k+3)G

Then for the baby step you calculate
s= m * -G
loop: r=r+s


Giant means giant, baby baby.

You have 2 possibilities:

1)
Baby-steps:  0, 1*G, 2*G, ..., (m-1)*G  //  Giant-steps:  P, P - m*G, P - 2*m*G, ...., P - (m-1)*(m)*G

or

2)
Baby-steps:  P, P - 1*G, P - 2*G, ...., P - (m-1)*G //  Giant-steps:  0, m*G,  2*m*G, ...., (m-1)*m*G


In either cases  you can find a key between 1 (P = 1G) and m^2 - 1 (P - (m-1)*G = (m-1)*m*G  -->  P = (m^2 - 1)*G)
You have two lists of m elements.

If you need a search space from k to k + m^2 - 1 (size of search = n = m^2),

in the case 1)  add k*G in the baby-steps list:  k*G, (k+1)*G, (k+2)*G,...., (k+m-1)*G or sub k*G from P in the giant-steps list
in the case 2)  add k*G in the giant-steps list:  k*G, (k+m)*G, (k+2*m)*G,...., (k+(m-1)*m)*G or sub k*G from P in the baby-steps list

baby: step of 1G
giant: step of mG (where m is sqrt(n))

728  Alternate cryptocurrencies / Altcoin Discussion / Re: about Brute-force missing private key in the end ! on: February 01, 2019, 01:45:56 PM

1) Only if you know the public key too (not the address).

2) baby-step-giant-step in this case (80 bits) would require more than 2^40 work, because you don't have enough Ram to store 2^40 public keys.


How it works

imagine you have:

a) a partial private key d:
f461d7473a944648de9630a2062fc29f676fab0c6e9c344a472f70bef31dca17 (you lost the last digit, 7)

b) the public key P:
x : 4461130191898d8b22c00c474a5903a679afcf7988c2db3636223ab4ce7883e2
y:  50abf843d037afdb1a40ae565c8c72b7b29740282bd335a63d369e6eeced21a2

You lost the last hex digit, 7,  16 is then the search space size.
How can you retrieve the correct value?

Option:
 
1) brute force, there are max 16 tries to do:  from f461....dca10 to f461....dca1e, for each private key you compute the public key and compare the result with P.


2) baby-step-giant-step (--> http://andrea.corbellini.name/2015/06/08/elliptic-curve-cryptography-breaking-security-and-a-comparison-with-rsa/):

you create two lists, the first one (giant steps list) in a hash table stored in Ram and the second one (baby steps list) dynamic:

a) (giant steps list): each giant step is equal to the sqrt(space size), in our case sqrt(16) = 4, namely the distance between 2 elements is 4*G .  

Then we create the list:
k*G, (k+4)*G, (k+8)*G, (k+12)*G   where k is the first possible key to check (k = f461....dca10)

b) now we generate the baby-steps list (the distance beween 2 consecutive elements is 1*G) on fly, starting from

P  

and we check if it is equal to an element in the giant-steps list, if not try with

P - 1*G, P - 2*G and so on (P-3*G is the last element).

In our case, P - 3*G =  (k+4)*G

--> P = (k+7)*G  --> private key k+7


If you don't know the last 2 hex digits, the search space is 256 elements, then you need to create a list of 16 elements (baby-steps: k*G, (k+16)*G, (k+2*16)*G, ...,(k+15*16)*G) and the baby-steps list (P, P - 1*G, P - 2*G, ...., P - 15*G).

16 elements * 16 elements = 256 comparisons



A software (not mine) that works in this way: https://gist.github.com/jhoenicke/2e39b3c6c49b1d7b216b8626197e4b89
729  Local / Discussioni avanzate e sviluppo / Re: curve ellittiche e algoritmo ECDSA on: January 31, 2019, 06:35:16 PM
Parliamo un po' più a fondo di endomorfismi, vediamo da dove nascono i valori beta di cui ho parlato un paio di post sopra e cerchiamo così di entrare più a fondo nel mondo delle curve ellittiche (sempre privilegiando la nostra curva secp256k1).

ENDOMORFISMI

Una mappa f: E -> E si dice un ENDOMORFISMO (endomorfismo di E sul campo Fp) se

1) manda il punto all'infinito di E nel punto all'infinito di E

2) f(P) = (g(P),h(P)) per tutti i punti P di E, dove g e h sono funzioni razionali (rapporto tra 2 polinomi) i cui coefficienti sono nel campo Fp.

In pratica facendo una serie di operazioni - g - sul punto P (cioè sulla sua x e sulla sua y) si ottiene la x di un nuovo punto, il punto f(P), analogamente facendo un'altra serie di operazioni - h - sulle coordinate x e y di P si ottiene la y di f(P).

Questa mappa quindi consente di passare da un punto P della curva a un punto f(P) sempre della curva, facendo alcune operazioni particolari sulle x e y di P.

Un esempio semplice di mappa che soddisfa il requisito 2) ma non 1) è la mappa che prende P qualsiasi e aggiunge a P sempre lo stesso punto, chiamiamolo G.

f : P  -->  P+G  per ogni P di E

Questa mappa (una sorta di traslazione) è quella che viene usata in programmi tipo vanitygen per generare nella maniera più veloce possibile le chiavi pubbliche (tenendo traccia delle chiavi private, che vengono incrementate di 1 ad ogni iterazione).

Nell'ipotesi che P sia diverso da G e da O (punto all'infinito), questa mappa si compone delle seguenti due parti:

a) la x di f(P) = g(P) = ((yG - yP) / (xG -xP))^2 -xP -xG

b) la y di f(P) = h(P) = ((yG - yP) / (xG -xP)) * (xP - g(P)) - yP

ovvero la solita formule di addizione.

Però questa mappa manda O in O+G = G, e quindi non rispetta il primo criterio e non è un endomorfismo. Vedremo invece che la mappa:

f : P  --> k*P

che associa a ogni punto il suo prodotto per uno scalare k fissato è un endomorfismo.


Nel termine ENDOMORFISMO il prefisso ENDO significa INTERNO, il termine MORFISMO vuol dire che questa mappa rispetta la "forma" (struttura) algebrica di E, nel senso che sommare prima due punti in E e poi applicare la mappa f produce lo stesso risultato che applicare prima f ai due punti separatamente e poi sommare i risultati:

f(P1 + P2) = f(P1) + f(P2) per ogni P1, P2 in E.


Per fare un parallelo con un esempio più noto, la mappa

f : R -> R,  f(x) = ln(x)

si chiama OMOMORFISMO nel senso che traduce la struttura algebrica (operazione) della moltiplicazione in una struttura algebrica analoga, dello stesso tipo, cioè nella addizione:

ln(a*b) = ln(a) + ln(b)


In R se vogliamo costruire un ENDOMORFISMO che rispetti l'operazione di addizione possiamo farlo così:

f : R -> R   f(x) = k*x

k*(a+b) = k*a + k*b

(si noti il parallelismo con k*P delle curve ellittiche, dove k*(P1 + P2) = k*P1 + k*P2)

Nota: possono sembrare cose molto astratte, ma quanti sbagliano trattando la funzione x^2 o la funzione radice come fossero endomorfismi rispetto all'operazione di addizione!

(a + b)^2 = a^2 + b^2

radice (a + b) = radice(a) + radice(b)

mentre ovviamente x^2 e radice(x)  sono endomorfismi solo rispetto all'operazione di moltiplicazione.



Torniamo alle curve ellittiche.

Un endomorfismo f è una mappa da E a E che soddisfa certi requisiti, ovvero che manda punti di E in punti di E con l'unica avvertenza che il punto O va mandato nel punto O.

Si può verificare che un endomorfismo da E in E è sempre un omomorfismo di gruppo, ovvero che:

f(P1 + P2) = f(P1) + f(P2)

Esempi di endomorfismi da E in E

1) la moltiplicazione per uno scalare k fissato

la mappa f: P --> k*P è endomorfismo di E, è immediato verificare infatti che k*(P1 + P2) = k*P1 + k*P2

casi particolari della mappa appena vista si hanno per k = 1 (identità) e k = -1 (la mappa negazione, quella che associa ad ogni punto P il suo opposto -P, nel qual caso f è definita come (x,y) --> (x,-y) ).


2) la mappa f: (x,y) --> (beta*x, y)  dove beta è un elemento di ordine 3 di Fp (è una radice cubica di 1, questo si ha solo se p = 1 mod 3)

in quest'ultimo caso si ha quindi la possibilità di calcolare le coordinate di un nuovo punto in modo rapidissimo, con una sola moltiplicazione nel campo Fp. Se si applica 3 volte di seguito la mappa f appena descritta

P      -->   f(P) = P1  --> f(P1) = P2      --> f(P2) =  P

(x,y) --> (beta*x, y) --> (beta^2*x, y) --> (beta^3*x,y) = (x,y)

si vede che si torna sempre al punto dal quale si era partiti.  Quindi, ragionando senza le coordinate, si ha

P -> lambda * P -> lambda^2 * P -> lambda^3 * P = P   dove lambda è uno scalare di Zn

ovvero che lambda è un elemento di ordine 3 di Fn. Sottolineiamo che, quando si passa da un elemento P a un elemento P1 = f(P), si può sempre scrivere P1 come k*P, poichè ogni punto P diverso dal punto all'infinito genera ogni altro elemento di E, ovvero ogni punto P1 è multiplo di ogni altro punto P, per un opportuno fattore k.

Quindi di fatto la mappa 2) è un caso particolare della mappa 1), dove m = lambda e i calcoli sulle coordinate risultano particolarmente semplici (g(P) = beta*x, h(P) = y)


Piccola osservazione: sia p - 1 che n - 1 sono multipli di 3:

Code:
p - 1 = 115792 089237 316195 423570 985008 687907 853269 984665 640564 039457 584007 908834 671662 (78 digits) = 2 × 3 × 7 × 13441 × 205115 282021 455665 897114 700593 932402 728804 164701 536103 180137 503955 397371 (72 digits) 

n - 1 = 115792 089237 316195 423570 985008 687907 852837 564279 074904 382605 163141 518161 494336 (78 digits) = 26 × 3 × 149 × 631 × 107361 793816 595537 × 174 723607 534414 371449 × 341 948486 974166 000522 343609 283189 (33 digits)


Come si fanno a calcolare gli elementi beta e lambda (rispettivamente elementi di ordine 3 di Zp e di Zn)?

Basta prendere un elemento a caso di Zp (Zn) ed elevarlo alla (p-1)/3 ((n-1/3)), si otterrà sicuramente un elemento di ordine 3, se non è uguale a 1 otterremo una delle due radici non banali dell'unità che stiamo cercando:

Code:
>>> hex(pow(19,(p-1)/3,p))  #proviamo prima con 19^((p-1)/3)

'0x1L'     #otteniamo 1, non va bene

>>> hex(pow(20,(p-1)/3,p)) #proviamo allora con 20^((p-1)/3)

'0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501eeL'  --> ok, questo è beta

>>> hex(pow(24,(p-1)/3,p))  #facendo altri tentativi, alla fine otteniamo con 24^((p-1)/3)

'0x851695d49a83f8ef919bb86153cbcb16630fb68aed0a766a3ec693d68e6afa40L'  --> questo lo chiamiamo beta2, poichè è = beta^2


Code:
>>> hex(pow(48,(n-1)/3,n))

'0x1L'

>>> hex(pow(49,(n-1)/3,n))  -->

'0x5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72L'  -->  abbiamo trovato lambda

>>> hex(pow(50,(n-1)/3,n))

'0xac9c52b33fa3cf1f5ad9e3fd77ed9ba4a880b9fc8ec739c2e0cfc810b51283ceL'   --> abbiamo trovato lambda2 = lambda^2


Facciamo un rapido controllo che la seguente mappa :

f:        P        --> lambda*P

         (x,y)   --> (beta*x, y)

sia verificata per P = G:

Code:
from micro_ecdsa import mul

>>> Gx = 0x79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798
>>> Gy = 0x483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8

>>> lamb = 0x5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72

>>> (Rx,Ry) = mul(lamb,Gx,Gy)   --> R = lambda * G

>>> hex(Rx)
'0xbcace2e99da01887ab0102b696902325872844067f15e98da7bba04400b88fcbL'

>>> hex(Ry)
'0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8L'  --> da notare che Ry = Gy !!!

>>> beta = 0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee

>>> hex((beta*Gx) % p)
'0xbcace2e99da01887ab0102b696902325872844067f15e98da7bba04400b88fcbL' --> beta * Gx = Rx !!!
730  Alternate cryptocurrencies / Altcoin Discussion / Re: about Brute-force missing private key in the end ! on: January 31, 2019, 05:18:11 PM
You have all of the private key except 20 characters (80 bits)? Then it is possible and feasible to recover the entire key using baby-step-giant-step or pollard's tho algorithm.

It will require 2^40 work, which is a few hours on a GPU.

1) Only if you know the public key too (not the address).

2) baby-step-giant-step in this case (80 bits) would require more than 2^40 work, because you don't have enough Ram to store 2^40 public keys.


To retrieve the last 60 bits (bitcoin case) my program takes about 5 minutes (it run on a single cpu). It uses baby-step-giant-step algorithm and 32 GB.
731  Bitcoin / Development & Technical Discussion / Re: BitCrack - A tool for brute-forcing private keys on: January 25, 2019, 08:02:22 PM
1.) Is it possible to recover part of private key, when I have valid address?

For example:
let's say one of my paper wallet is partialy destroyed, and I have lost 5 or more characters from private, like:

pub: 1DrqrF3JEYB9TXWymz4zGoEzM5i75JMLFB
priv: L3Wji4b***4Po3vo2gmi42Y2kbbxtnpAfQ5wJx11BgNr****8v3Q

Would be EXTREMALY usefull for paperwallet users!

Regards.

If you know the public key (not the address) and the first ~ 180 bits of the private key, it is possible to retrieve the other 70 / 80 bits using smarter ways than brute force attack.
732  Local / Italiano (Italian) / Re: [INFO] TRUST. Come funziona il sistema di feedback on: January 22, 2019, 11:36:57 PM
@fillippone : grazie per l'aiuto.

Adesso il discorso fila.

Ho provato a togliere temporaneamente tutte le persone della mia trust list e quindi ho aggiunto solo "l'utente" DefaultTrust (la cosiddetta DT1 una volta scelta direttamente da Theymos e ora scelta in modo più democratico **):


Depth 0

    DefaultTrust (1)
    arulbero (0)

Depth 1

    theymos (1)
    dooglus (1)
    gmaxwell (1)
    OgNasty (-1)
    SebastianJu (1)
    qwk (1)
    Vod (1)
    mprep (1)
    Cyrus (1)
    monkeynuts (1)
    Welsh (1)
    ibminer (1)
    TMAN (1)
    Lauda (1)
    ...


In DT0 c'è solo il mio nome (con 0 voti) e l'utente DefaultTrust (con 1 voto, il mio che sono la radice del depth). In sostanza è una lista personale con 1 solo utente (il mio nome non conta).

In DT1 quindi ci possono essere solo le persone presenti nella lista dell'utente DefaultTrust, ovvero la famosa DT1 approvata dal forum. E' per questo motivo infatti che la trust lista "personale"  dell'utente DefaultTrust si chiama DT1, perchè come lista si trova effettivamente al livello di depth1  e non di depth0 (dove invece è presente come singolo utente)


Da notare che i voti ottenibili (numeretto in nero) per ciascuno degli utenti della DT1 sono:

(1) : ad esempio theymos ha 1 voto perchè la maggioranza di DefaultTrust lo supporta (DefaultTrust quindi in questo caso si comporta come un normale utente che vota la persona presente nella propria lista).

(-1) : come succede ad esempio a OgNasty, in questo caso DefaultTrust rivela la sua natura ambigua di uno e molteplice, infatti il suo voto è il risultato di un voto a maggioranza che risulta negativo. Quando parlo di voto sottintendo il bilancio netto tra voti positivi e voti negativi. Dare un voto positivo ad A consiste nell'includere A nella propria trust list, dare un voto negativo ad A consiste nell'inserire ~A nella propria trust list; quindi con il termine "voto" non ci si riferisce ai feedback che invece concorrono a determinare i 3 numeri relativi al trust (il punteggio di trust dovrebbe essere lo scopo finale di tutto questo sistema di filtraggio dei feedback costruito mediante l'impostazione di liste personalizzate di utenti fidati nel rilasciare i feedback)


Il meccanismo del voto funziona in questo modo (se ho ben capito):

dato un livello n e il livello successivo n+1, gli utenti del livello n+1 sono gli utenti appartenenti alle liste degli utenti del livello n;

ogni utente del livello n dà un voto positivo (o negativo con il simbolo ~) a tutti gli utenti del livello n+1 presenti nella propria lista.

In questo modo se ad esempio ho 10 persone nella mia personale trust list (DT0), ogni singolo utente della DT1 non potrà avere un voto maggiore di (10), perchè non potrà essere incluso in più di 10 liste. Man mano che si procede con i livelli aumentano ovviamente il numero delle persone e quindi il numero delle liste (cioè dei voti possibili che ciascun utente può ottenere).  Ad ogni livello aggiunto si amplia la platea di votanti e di persone votate, con l'osservazione che quando subentrano ad esempio 50 nuove persone, queste rappresentano 50 potenziali voti in più per ogni utente a partire dal livello successivo.

Quindi se ho 3 livelli (DT0, DT1, DT2) ho anche 3 insiemi, ma ogni insieme è contenuto nel successivo? Non è detto, in quanto i nuovi voti potrebbero essere negativi quindi un utente DT1 potrebbe non essere incluso nella lista dei DT2 qualora il suo bilancio di voti diventasse negativo. Infatti nella mia DT2 trovo OgNasty (1), mentre nella mia DT3 trovo OgNasty (-1).

Di fatto il meccanismo del voto si articola in 2 passi:

a) un nome viene proposto al livello n+1 se compare in almeno una lista degli utenti del livello n

b) su questo nome viene fatto una votazione automatica (voti positivi - voti negativi) e il risultato determina se quel nome rimane o no in modo effettivo a quel livello; se ad esempo n + 1 = 2 e io ho impostato la depth proprio a 2, allora vuol dire che considero affidabili tutti i feedback rilasciati dagli utenti della mia DT0, DT1 e DT2. Un utente DT2 che riceva un voto complessivo negativo dagli utenti DT1 compare con il nome barrato, ad indicare che i feedback da lui rilasciati non incideranno sui trust degli utenti del forum che io visualizzo. Ma rimane la possibilità che riceva più voti ai livelli successivi e rientri quindi in una lista successiva, tipo DT3. Ma ricordando che di solito si tiene la depth a 1 o 2, la DT3 e la DT4 (l'ultimo livello possibile) spesso non contano.

Questo meccanismo prevede l'eccezione come si è già detto solo del caso DT1 =  DefaulTrust list (la DefaultTrust list concettualmente è diversa dal DefaultTrust user, che infatti si trova un livello sopra). In questo caso infatti, poichè il DefaultTrust user in depth0 è uno solo (non può stare insieme ad altri utenti), il suo voto per determinare gli utenti effettivi del livello successivo DT1 (1 o -1) diventa di fatto il risultato di una votazione interna allo stesso insieme di utenti.
Negli altri casi invece è il livello precedente che decide con il suo voto la composizione del livello successivo.


Nell'immagine qui sotto si vede la differenza nel modo di selezionare la DT1 prima (da Theymos) e ora dove persone con requisiti sufficienti forniscono la lista dei nomi su ciascuno dei quali l'utente DefaultTrust (la lista stessa) ha l'ultima parola: (1) o (-1).  

Da quello che ho capito il sistema attuale è dinamico in tempo reale per quanto riguardo l'autoselezione dei membri della lista, mentre la selezione della lista che precede questa autoselezione dovrebbe avvenire ogni tot giorni (ovviamente sempre mediante uno script automatico che controlla periodicamente chi soddisfa tutti i prerequisiti per poter accedere in DT1)

**

733  Local / Italiano (Italian) / Re: [INFO] TRUST. Come funziona il sistema di feedback on: January 22, 2019, 10:53:34 PM
Io vedo:

Dpth0:
  arulbero(1)
  fillippone(0)

depth1:
  arulbero(6)
  fillippone(3)

depth2:
  arulbero(7)
  fillippone(3)

Chiaramente abbiamo trust list diverse, perché dovrebbero essere uguali? Io posso essere nella tua trust list, ma non viceversa, ad esempio. Questo già comporterebbe differenze.

Se quei numeri (ma allora non è così) rappresentano il bilancio dei feedback rilasciati rispettivamente dagli utenti delle liste dt1 dt2 dt3, ed essendo queste liste uniche, non dovrebbero comparire gli stessi punteggi?

Perché l’origine della depth è l’utente medesimo, quindi la dt1 mia è diversa dalla tua. E per questo il proprio profilo è (0) in dt0 visto che non puoi auto-votarti.
Difatti non è secondo me un numero oggettivo.
Per le regole di Theymos poi credo il discorso sia infatti ... quali DT contino e quali no...

Quindi riassumendo:

in depth0 vedo solo le persone della mia personale trust list; tutte queste persone (eccetto me) hanno accanto come numeretto (1); poichè io non ho rilasciato loro nessun feedback, ne deduco che quel numero 1 significa che appartengono tutte alla lista generata da me medesimo che sono l'origine della depth (quindi i feedback non c'entrano). Questa lista si chiama dt1 o dt0?

in depth1 vedo le persone che sono nelle trust list delle persone presenti nella mia trust list; il numeretto accanto a ciascun nome indica in quante liste diverse questo nome è presente (quanti "voti" ha preso tra le persone della mia personale trust list)

in depth2 vedo le persone che sono nelle trust list delle persone presenti al punto precedente con i rispettivi voti e così via.
734  Local / Italiano (Italian) / Re: [INFO] TRUST. Come funziona il sistema di feedback on: January 22, 2019, 10:27:58 PM
Io vedo:

Dpth0:
  arulbero(1)
  fillippone(0)

depth1:
  arulbero(6)
  fillippone(3)

depth2:
  arulbero(7)
  fillippone(3)

Chiaramente abbiamo trust list diverse, perché dovrebbero essere uguali? Io posso essere nella tua trust list, ma non viceversa, ad esempio. Questo già comporterebbe differenze.

Se quei numeri (ma allora non è così) rappresentano il bilancio dei feedback rilasciati rispettivamente dagli utenti delle liste dt1 dt2 dt3, ed essendo queste liste uniche, non dovrebbero comparire gli stessi punteggi?
735  Local / Italiano (Italian) / Re: [INFO] TRUST. Come funziona il sistema di feedback on: January 22, 2019, 09:43:25 PM
Cosa sono i numeri tra parentesi?

Ho riletto i post su questo punto ma non mi è chiaro il significato di quei numeri: cosa sono? Ho notato che la stessa persona se si trova sia in depth0 che in depth1 ha numeretti accanto diversi.

Ok, ma se fosse così ogni username dovrebbe avere un solo numero vicino, nel mio caso ad esempio vedo a volte arulbero(1) e a volte arulbero(7) : perchè?

Forse in un caso vuol dire che c'è 1 solo utente dt1 che mi ha inserito nella sua trust list, mentre nel secondo caso ci sono 7 utenti dt2 che mi hanno incluso?
Io l’ho capita così, nel dt1 , primo “grado di separazione” arulbero ha una differenza  +1 tra i trust positivi e quelli negativi, in dt2, fino cioè al secondo “grado di separazione” Arulbero ha una differenza +7 tra i trust positivi e quelli negativi.

Sì, penso anch'io che sia così, a questo punto è l'unica spiegazione.

Questi valori sono gli unici valori "oggettivi" presenti nel forum, nel senso che mentre il punteggio di trust (il numerino verde) dell'utente A è diverso se visto da me (in quanto è giudicato dai feedback rilasciati dagli utenti della mia trust list) o se visto da te (se hai una trust list diversa dalla mia), quando invece guardiamo quel numeretto tra parentesi in nero dell'utente A vediamo entrambi lo stesso valore, in quanto stiamo guardando in quel caso al giudizio degli utenti della lista dt1 (in depth0) e della list dt2 (in depth1), che sono liste uniche appunto per tutto il forum.

EDIT: ho appena ricontrollato:

depth0:
  arulbero(0)
  fillippone(1)

depth1:
  arulbero(7)
  fillippone(2)

tu vedi la stessa cosa riguardo noi due?
736  Local / Italiano (Italian) / Re: [INFO] TRUST. Come funziona il sistema di feedback on: January 22, 2019, 09:30:30 PM


Cosa sono i numeri tra parentesi?

Ho riletto i post su questo punto ma non mi è chiaro il significato di quei numeri: cosa sono? Ho notato che la stessa persona se si trova sia in depth0 che in depth1 ha numeretti accanto diversi.

I barrati sono quelli esclusi dalla lista e il numero è il numero di persone che li ha esclusi.
Ad esempio se 5 dt escludono "username" mettendo nella loro lista ~username e 3 lo includono mettendo nella loro lista username.
Tu da https://bitcointalk.org/index.php?action=trust;dt vedrai:

username (-2)

Barrato perchè overall è negativo e -2 dato dalla somma/diffenza delle persone che lo hanno escluso (-5) e quelle che lo hanno incluso (3).

Ok, ma se fosse così ogni username dovrebbe avere un solo numero vicino, nel mio caso ad esempio vedo a volte arulbero(1) e a volte arulbero(7) : perchè?

Forse in un caso vuol dire che c'è 1 solo utente dt1 che mi ha inserito nella sua trust list, mentre nel secondo caso ci sono 7 utenti dt2 che mi hanno incluso?
737  Local / Italiano (Italian) / Re: BITCOIN PUMP! on: January 22, 2019, 08:51:44 PM
Linko un articolo un po' off topic: https://www.linkiesta.it/it/article/2019/01/18/la-disuguaglianza-sara-sempre-piu-una-questione-di-intelligenza/40784/

L'articolo analizza la distribuzione del QI (il quoziente d'intelligenza, distribuito come una gaussiana) in relazione all'aumento della complessità che si incontra nell'usare in modo proficuo le nuove tecnologie; questo fatto sta determinando una sempre maggiore disuguaglianza tra chi è in grado a livello cognitivo di muoversi in questi nuovi mondi sempre più complessi sfruttandone al massimo le potenzialità e chi invece si trova nella parte sinistra della gaussiana:

Quote
La situazione si fa progressivamente più complicata mano a mano che il progresso tecnologico sposta la soglia di “proficuo apprendimento” oltre un certo intervallo: fra 80 e 90 la curva si impenna sostanzialmente il che si traduce in un numero drammaticamente crescente di persone che hanno difficoltà obiettive ad usare proficuamente le nuove tecnologie che altri, tipicamente quelli nella coda destra della medesima curva, vanno introducendo.

Leggendolo mi è venuto da pensare a bitcoin. Anche se l'articolo si riferisce in maniera evidente soprattutto alle professioni (laddove saper usare in modo proficuo le nuove tecnologie è fondamentale per reggere alla competizione del mercato) mi sembra che con il passare del tempo si stia ingrandendo la classe di persone che, anche al di fuori di un contesto lavorativo, non riesce a sfruttare appieno le novità tecnologiche, tipo bitcoin.

738  Local / Italiano (Italian) / Re: [INFO] TRUST. Come funziona il sistema di feedback on: January 22, 2019, 01:53:45 PM


Cosa sono i numeri tra parentesi?

Ho riletto i post su questo punto ma non mi è chiaro il significato di quei numeri: cosa sono? Ho notato che la stessa persona se si trova sia in depth0 che in depth1 ha numeretti accanto diversi.
739  Local / Italiano (Italian) / Re: [INFO] +MERIT. Come funziona il sistema di premio on: January 21, 2019, 04:09:04 PM

Non per fare il pignolo, ma dove vedi tu la spiegazione in dettaglio?
Io leggo: è il punteggio di Trust calcolato in base ai feedback positivi ricevuti, ok, ma come è calcolato?

Effettivamente mancava la spiegazione su come è calcolato,  andrebbe aggiunta al thread di Micio per completezza  Smiley

qua sotto c'è la formula usata da theymos
...
   

Grazie! Quindi il discorso che pesava anche il numero dei btc "rischiati" è precedente a quel post e non vale più?

Comunque adesso è molto più chiaro.
740  Local / Italiano (Italian) / Re: [INFO] +MERIT. Come funziona il sistema di premio on: January 21, 2019, 01:39:59 PM
Mi manca ancora di capire come si ottiene il primo numero che si visualizza, il cosiddetto "punteggio trust" (il secondo è il numero dei feedback negativi, il terzo il numero dei feedback positivi ricevuti).


Per quanto riguarda la tua domanda è spiegato qui in dettaglio:


Trust: 10: -0 / +1

  • Il primo numero è il punteggio di Trust dell'utente calcolato in base ai feedback positivi ricevuti.
  • Il secondo numero è il punteggio dei feedback negativi ricevuti.
  • Il terzo numero aumenta con il numero di feedback positivi ricevuti.
  • Il colore cambia in base al punteggio. Dal peggiore al migliore: rosso (punteggio negativo),  nero, verde chiaro, verde scuro.
  • Il Trust diventa colore rosa (Huh) quando un utente affidabile riceve un feedback negativo recente da un utente affidabile. Questo sta a indicare che c'è il rischio ma non la certezza che un utente affidabile potrebbe non essere più affidabile come in precedenza, in questo caso si consiglia di controllare i feedback recenti.


Non per fare il pignolo, ma dove vedi tu la spiegazione in dettaglio?
Io leggo: è il punteggio di Trust calcolato in base ai feedback positivi ricevuti, ok, ma come è calcolato?
Pages: « 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 [37] 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 ... 96 »
Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!