I am researching PoS blockchains and I wanted to modify my node behavior on the testnet so that i can determine the viability of adversarial attacks. I want my node to be able to publish multiple blocks when i want it to (say as per some rules) and i want to observe the results ( the evolution of the forks i have created).
Please help me get started with such an attempt.
Any help is appreciated.
@striker_iiit perhaps you’re better off contacting iohk directly. they have most likely run a number of adversarial simulations as i’ve heard prof aggelos (aka sol3gga) talking about how they’ve solved for such scenarios with longest chain etc
@misteraxyz I’ve read the paper on Ouroboros and I realize that IOHK would’ve solved for all conceivable adversarial attacks before they even considered releasing the testnet. However i wanted to conduct the attacks and run the simulations myself in the interest of research, and perhaps try to observe the response of system in a few niche scenerios.
I essentially want to act as an adversary on the network attempting to compromise it.
One of the things that i’d like to do is have my node publish two valid blocks containing valid but different transactions when i get the chance to thus creating a fork and then observe the results of such an effort.
To answer your questions given the above attack:
yes all the blocks that i want to publish are valid
the blocks that i publish would have coin transfers
I assume that you are asking if the blocks i generate will come after the last published block, the answer to that is yes. I will extend the the current longest chain (when i get elected slot leader) but instead of publishing one block, i will publish multiple conflicting blocks in an attempt to create a fork.
I am talking about publishing multiple entire blocks when i am the slot leader not just a message/tx or two. And yes, when i publish my blocks, individually they will be valid, so will all the transactions they hold, and so will the block the extend.
Please note that the above is just one trivial attack that i used for the purpose of explaining my need. I fully realize that the attack described above would easily be thwarted.
What i am looking for is some guidance on how edit the behavior of my node so that i can do this.