Skip to content

Instantly share code, notes, and snippets.

View kushti's full-sized avatar

Alexander Chepurnoy kushti

View GitHub Profile
ergo {
...
wallet {
# fail if transaction can not be created with no more than specified number of inputs
maxInputs = 300
# if transaction has less than specified number of inputs, add them to collect dust
optimalInputs = 100
# the node will consume more RAM, for bigger caches and Bloom filters, to make wallet work better when there are many addresses
Call for Action: Building Peer-to-Peer Economies and Free Banking on Ergo
-------------------------------------------------------------------------
Since Satoshi's and Hal Finney's early posts and through years of discussions stimulated by Bitcoin experiment and thousands
other attempts to get better money for reworking economies for the better outcomes, some things are now clear. In particular,
the "best" and still realistic monetary system to replace fiat would emerge through competition, not design. There will be some obvious building
blocks though:
* Ergo as a neutral base layer for store-of-value transactions, trustless derivatives and smart reserves.
* Bitcoin as a neutral base digital commodity (would be relevant for some decades to come)
# A config for the Development Network which is supposed to serve needs of protocol-breaking changes testing.
ergo {
networkType = "devnet"
node {
# mining = true
# offlineGeneration = true
useExternalMiner = false
kushti :
[
{
"address": "22ELWBHzyWGjPRE48ZJDfFmD24myYdG3vHz8CipSS7rgE65ABmEj9QJiy3rG2PTJeCaZw9VX56GY6uoA3hQch7i5BfFU3AprUWTABi4X1VWtRdK9yrYJkmN6fq8hGfvmWTrsyh4fXZoGETpLuXQViYo194ajej2h7dr3oqNATdMskSXzxJi83bFdAvQ",
"value": 10000000000,
"assets": [
{
"tokenId": "f7995f212216fcf21854f56df7a9a0a9fc9b7ae4c0f1cc40f5b406371286a5e0",
"amount": 1
property("should break up fee inputs into multiple transactions if there are too many") {
val bh = boxesHolderGen.sample.get
val us = createUtxoState(bh, parameters)
val height = us.stateContext.currentHeight
// Generate a large number of fee boxes
val feeBoxes = (1 to 1000).map { _ =>
val value = Gen.choose(1, 100).sample.get
new ErgoBoxCandidate(value, feeProp, height)
}
# A config for the Development Network which is supposed to serve needs of protocol-breaking changes testing.
ergo {
networkType = "devnet"
node {
mining = true
offlineGeneration = true
useExternalMiner = false
@kushti
kushti / gist:270320175b8b0469d680d41ce13670b1
Created April 14, 2024 19:07
2-out-of-2 signing algo
An example test where Alice (A) and Bob (B) are signing an input in a distributed way. A statement which
protects the box to spend is "pubkey_Alice && pubkey_Bob". Note that a signature in this case is about
a transcript of a Sigma-protocol ((a_Alice, a_Bob), e, (z_Alice, z_Bob)),
which is done in non-interactive way (thus "e" is got via a Fiat-Shamir transformation).
For that, they are going through following steps:
- Bob is generating first protocol message a_Bob and sends it to Alice
- Alice forms a hint which contain Bob's commitment "a_Bob", and puts the hint into a hints bag
- She proves the statement using the bag, getting the partial protocol transcript
@kushti
kushti / sigmabankv2.es
Created March 12, 2024 12:06
SigmaUSD bank v2
{
// diff from V1:
// * no cooling off period
// this box
// R4: Long : Number of stable-coins in circulation
// R5: Long : Number of reserve-coins in circulation
// R6: Int : Last oracle update height (to have limits per cycle)
// R7: (Long, Long) : Remaining limit for SigUsd and SigRSV minting per oracle update
package org.ergoplatform
import io.circe.jawn.JawnParser
import org.ergoplatform.http.api.ApiCodecs
import org.ergoplatform.modifiers.mempool.{ErgoTransaction, ErgoTransactionSerializer}
import scorex.util.encode.Base16
object Checker5015 extends App with ApiCodecs {
package org.ergoplatform
import io.circe.jawn.JawnParser
import org.ergoplatform.http.api.ApiCodecs
import org.ergoplatform.modifiers.history.{BlockTransactions, BlockTransactionsSerializer}
import scorex.util.encode.Base16
import java.io.File
object Checker5015 extends App with ApiCodecs {