Zacząłem trochę grzebać w…

Zacząłem trochę grzebać w kodzie #grin. Co prawda nie znam kompletnie języka Rust ale co tam 🙂 nie zniechęcam się.
Generalnie chciałbym wyciągnąć sobie dane z poola. Rozkminiłem, że grin ma dwa poole.
1. Stempool
2. Transaction pool

Pierwszy jest używany przez Dandeliona w celu maskowania pochodzenia transakcji. Transakcje trzymane tam są przez pewien czas i przesyłane pomiędzy nodami. Następnie wrzucane do transaction poola i propagowane do sieci. Zapobiega to wyśledzeniu źródła transakcji.
W oficjalnym API noda jest funkcja /get pool/. Zwraca ona ilość transakcji ale tylko z transaction poola. Po analizie kodu, wydaje mi się możliwe proste kopiuj/wklei (mój ulubiony sposób programowania ( ͡° ͜ʖ ͡°) ) zaimplementowanie drugiej funkcji API do wyciągnięcia ilości transakcji ze stempoola.

W pliku https://github.com/mimblewimble/grin/blob/master/pool/src/transaction_pool.rs
Zostają utworzone oba poole. To identyczne obiekty!

‚TransactionPool {
txpool: Pool::new(chain.clone(), verifiercache.clone(), „txpool”.tostring()),
stempool: Pool::new(chain.clone(),verifiercache.clone(),”stempool”.tostring(),)
}’

W tym samym pliku jest zdefiniowana prosta funkcja do wyciągnięcia ilości transakcji z txpoola. Ze stempoola nie ma.
I jest ciekawy komentarz, że stempool jest zastrzeżony ( ͡º ͜ʖ͡º).

‚/Get the total size of the pool.
Note: we only consider the txpool here as stempool is under embargo.

pub fn total_size(&self) -> usize {
self.txpool.size()
}’

W pliku https://github.com/mimblewimble/grin/blob/master/api/src/handlers/pool_api.rs mamy definicję dla tego prostego API i wywołanie funkcji total_size.
/GET /v1/pool

‚pub struct PoolInfoHandler {
pub tx_pool: Weak,
}

impl Handler for PoolInfoHandler {
fn get(&self, req: Request) -> ResponseFuture {
let poolarc = wfut!(&self.txpool);
let pool = pool_arc.read();

json_response(&PoolInfo {
pool_size: pool.total_size(),
})
}’

Trochę zamieszania jest w pliku https://github.com/mimblewimble/grin/blob/master/api/src/handlers.rs
I tu pewnie będzie najtrudniej i najłatwiej o problem.

Czyli trochę kopiowania, kompilacja i może zadziała.
Jutro może spróbuję czy można zostać programistą grina, bez umiejętności programowania, za to dużym skillem ctrl+c/ctrl+v XD.

#bitcoin #kryptowaluty