Skip to content

Instantly share code, notes, and snippets.

View kushti's full-sized avatar

Alexander Chepurnoy kushti

View GitHub Profile
{
// ===== Contract Information ===== //
// Name: Phoenix HodlCoin Bank
// Description: Contract for the bank box of the HodlCoin protocol.
// Version: 1.0.0
// Author: Luca D'Angelo ([email protected]), MGPai
// ===== Box Contents ===== //
// Tokens
@kushti
kushti / AdaptiveSimulator.scala
Created January 30, 2023 11:41
EIP-37 DAA simulator
package org.ergoplatform.tools
import org.ergoplatform.mining.difficulty.{DifficultyAdjustment, RequiredDifficulty}
import org.ergoplatform.modifiers.history.header.Header
import org.ergoplatform.settings.{Args, ErgoSettings, NetworkType}
import java.util.concurrent.TimeUnit
import scala.collection.mutable
import scala.concurrent.duration.FiniteDuration
import scala.util.Random
@kushti
kushti / FromSnapshot.scala
Created January 8, 2023 19:19
fromSnapshot functions removed from UtxoState (not used now)
def fromSnapshot(prover: BatchAVLProver[Digest32, HF],
settings: ErgoSettings) = {
val stateDir = ErgoState.stateDir(settings)
stateDir.mkdirs()
val constants = StateConstants(settings)
val store = new LDBVersionedStore(stateDir, initialKeepVersions = constants.keepVersions)
val version = store.get(bestVersionKey).map(w => bytesToVersion(w))
.getOrElse(ErgoState.genesisStateVersion)
val persistentProver: PersistentBatchAVLProver[Digest32, HF] = {
@kushti
kushti / light.cong
Last active February 3, 2022 21:53
ergo {
node {
keepVersions = 32
}
}
scorex {
network {
maxConnections = 10
}
object LeifHelp extends App {
val etBytes = Base16.decode("0008cd03e98b0082050a0878b6d1136f2d8cf5e24f7b6d025b2961bffaf5ca3a537a4f52").get
val v = Value.liftByteArray(etBytes)
val bs = ValueSerializer.serialize(v)
println("bs: " + Base16.encode(bs))
}
def reemissionBoxProp(s: MonetarySettings): ErgoTree = {
val rewardOut = ByIndex(Outputs, IntConstant(0))
val heightCorrect = EQ(boxCreationHeight(rewardOut), Height)
val heightIncreased = GT(Height, boxCreationHeight(Self))
val validPeriod = GE(Height, IntConstant(2080800))
val coinsToIssue = s.oneEpochReduction // 3 ERG
val correctCoinsIssued = EQ(coinsToIssue, Minus(ExtractAmount(Self), ExtractAmount(rewardOut)))
val sponsored = GT(ExtractAmount(rewardOut), ExtractAmount(Self))
package org.ergoplatform.wallet.serialization
import org.ergoplatform.{ErgoLikeTransactionSerializer, JsonCodecs}
import scorex.util.encode.Base16
object TransactionParser extends App {
val bytes = Base16.decode("...").get
val tx = ErgoLikeTransactionSerializer.fromBytes(bytes)
JsonCodecsWrapper.ergoLikeTransactionDecoder.decodeJson(j)
object MiningAddresses extends App {
val address = "9fAuYCJ9pCfL8cNn2nsoUhYqmjkjP78Y2KzSptu769nYHGSXVir"
val enc = new ErgoAddressEncoder(ErgoAddressEncoder.MainnetNetworkPrefix)
val addr = enc.fromString(address).get.asInstanceOf[P2PKAddress]
val script = ErgoScriptPredef.rewardOutputScript(720, addr.pubkey)
println(Pay2SAddress(script)(enc))
}
object ValueEncoder extends App {
val pd = ErgoAddressEncoder
.apply(ErgoAddressEncoder.MainnetNetworkPrefix)
.fromString("9gmNsqrqdSppLUBqg2UzREmmivgqh1r3jmNcLAc53hk3YCvAGWE")
.get
.asInstanceOf[P2PKAddress]
.pubkey
val s = SigmaPropConstant(pd)
import scalaj.http.{Http, HttpOptions}
import scala.util.Try
object Connector extends App {
var prevPoolDatapoint = 0L
(1 to 10000000).foreach {_ =>
val t = Try {