Skip to content

Instantly share code, notes, and snippets.

@kushti
Created November 22, 2023 15:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kushti/14debb9abeb03a2d61051494c7511a14 to your computer and use it in GitHub Desktop.
Save kushti/14debb9abeb03a2d61051494c7511a14 to your computer and use it in GitHub Desktop.
import org.ergoplatform.modifiers.mempool.ErgoTransactionSerializer
import org.ergoplatform.http.api.ApiCodecs
import scorex.util.encode.Base16
object Checker5015 extends App with ApiCodecs {
import io.circe.parser._
val txJsonString =
"""
|{"id":"80738ab613647fc3e2cc237a30777af67c6410901ff9877d7d8a98a32ab9a115","inputs":[{"boxId":"7e512111a7574f08da9d75d5e305e043fc87d28800534759617854b2936e3766","spendingProof":{"proofBytes":"","extension":{"0":"0c3c40430e3c4c0e430e00","1":"4c0e2200f7d4d0e8303d93c1d3908158ed2064e2009aba827c08c6a68a0689e665168b982922","2":"070232ac157cd4469c6e043dc722e8511b295c3a22fd19f89dff753a9c5c5ab2ff5c","3":"0e201a246d9cc5eb2cdf6af82f06f5eb0dd13589f0be73b2b7a7d498d8d483b60b96","4":"0408","5":"0c413c0e0c4d0e02c0843d240008cd03b0b2ce2839747f5e4d3c304a0dd67b47f29649a48e19c5cbb7b93aad106911df0080ea30240008cd03a9fb4e3874c496d5495ce3690862a03ab4d249f097155f9945b01b4fb1bb454b00","6":"64b78fbcd50151f88eabd6eef4896f748169955fd62cdf265b253924e4959e1dfc0101080120","7":"0e33020000000000000000ffffffffffffffff00000000000000000000000000000000000000000000000000000000000000000400","8":"058092f401"}}}],"dataInputs":[{"boxId":"fc3a84835aebb4c5479bd275ac22e85d9146976e3b1e086557eb8ec9dd93a815"}],"outputs":[{"boxId":"69eb7f8d9e6539202d5100daddf3dd3da4e3f4e039f38c422c2b77f67790ecff","value":500000,"ergoTree":"0008cd03b0b2ce2839747f5e4d3c304a0dd67b47f29649a48e19c5cbb7b93aad106911df","assets":[],"additionalRegisters":{},"creationHeight":1139474,"transactionId":"80738ab613647fc3e2cc237a30777af67c6410901ff9877d7d8a98a32ab9a115","index":0},{"boxId":"d5055de356a9581fb54db7191a84f61c946c5cb6888b57bd02dbce8ddb258614","value":400000,"ergoTree":"0008cd03a9fb4e3874c496d5495ce3690862a03ab4d249f097155f9945b01b4fb1bb454b","assets":[],"additionalRegisters":{},"creationHeight":1139474,"transactionId":"80738ab613647fc3e2cc237a30777af67c6410901ff9877d7d8a98a32ab9a115","index":1},{"boxId":"33d24a54f0b64742e2f043347beee4235bdc2312855e05108ae84a587c972d41","value":47100000,"ergoTree":"198b0b2d040004060402040404000e1101000000000000000000000000000000000400040004000400040002000420040004840104920104a0010460046604680460045e04c60104d00104c20104d80104d80104ca0104dc0104ce0104ca0104020400040204020402042004000402042004000e6e031005040004000e36100204a00b08cd0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798ea02d192a39a8cc7a701730073011001020402d19683030193a38cc7b2a57300000193c2b2a57301007473027303830108cdeeac93b1a573046eebdc83050005000404d812d601db6501fed602b27201730000d603e4c672020610d604b27203730100d605b27203730200d606b27203730300d607e4e3050c413c0e0c4d0ed608e4e3030ed609d90109434c0ed804d60b8c720901d60c8c720902d60d8c720c01d60e8c720c02a09f9f720b7bb4720d7304720e7b73059f720b7bb4720d720eb1720dd60ae4c672020707d60be4c672020807d60ce4e3000c3c40430e3c4c0e430ed60d8602720b7306d60eb0b472017307b27203730800830007d9010e3c1363b38c720e01e4c68c720e020413d60fd9010f0e958f7eb2720f73090004730ab3830102730b720f720fd610addb0c0e720ed9011004dad901124c13d804d614cbb3e4c67202090edb0702b28c7212018c72120200d615b17214d616997215730cd617da720f01b47214730d72168602b37217da720f01b4721472167215b17217018602720e7210d611e4e30207d612ccad831104730e730f7310731173127313731473157316731773187319731a731b731c731d731ed90112047d721202d1ededededededededed92a39a72049c997205731f72068fa39a72049c7205720691b17207732093cbdb6401e4dc640ce4e3066402addc0c1d720701db0c0e7207d901134c413c0e0c4d0e86027a7e9a8c721302732105dad90115413c0e0c4d0ed801d6178c721502cbb3b37a8c7215018c721701b08c721702830002d901183c0e4d0ed801d61a8c721802b3b38c7218018c721a017a8c721a02018c721301e4e3070e720893a0da7209018602720ae4e3014c0edad9011313b07213720bd901155ba08c7215018c72150201ad720cd901133c40430e3c4c0e430e8c8c8c7213010201a0da7209018602dad901133c3c13100c4c0ed801d6158c7213018cb08c721501720dd901164f4304d803d6188c721601d6198c721802d61a8c72180195ae8c721502d9011b0493721b72198602721a9a721973228602a0721ada72090186028c721602b28c7213027219009a72197323010186028602720ead720cd901133c40430e3c4c0e430e8c8c721301017210dad901130ed803d615b17213d6169972157324d617da720f01b47213732572168602b37217da720f01b4721372167215b1721701cbb3b3db0702dad901133c130c4c0e8cb08c721301720dd901154f4304d802d6178c721501d6188c7217028602a08c721701da72090186028c721502b28c7213027218009a7218732601018602720e7210db0702721172087211af720cd901133c40430e3c4c0e430ed807d6158c721302d6168c8c72130102d6178c721502d618ccb3b3b3b3721272128c7217028c7216027208d619b17218d61a9972197327d61bda720f01b472187328721a93da7209018602720a8c721501a0da72090186028c7216018602b3721bda720f01b47218721a7219b1721b8c7217019299b1720eb1720ce4e30404afdc0c1d720701a5d901133c413c0e0c4d0e63d804d6158c721302d6168c721301d6178c721602d6188c721702ededed93c172158c72160193c272158c72170193b1db63087215b17218afdc0c1ddb63087215017218d901193c4d0e4d0e938c7219018c72190290b0ada5d90113639593c272137329c17213732a732bd90113599a8c7213018c721302e4e3080593c2b2a599b1a5732c00c2a7","assets":[],"additionalRegisters":{},"creationHeight":1139474,"transactionId":"80738ab613647fc3e2cc237a30777af67c6410901ff9877d7d8a98a32ab9a115","index":2},{"boxId":"e9a9908939a0b77b4c71cc8328be8ba179ff5a1581eee91c6b7b43c8cf8f26da","value":2000000,"ergoTree":"1005040004000e36100204a00b08cd0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798ea02d192a39a8cc7a701730073011001020402d19683030193a38cc7b2a57300000193c2b2a57301007473027303830108cdeeac93b1a57304","assets":[],"additionalRegisters":{},"creationHeight":1139474,"transactionId":"80738ab613647fc3e2cc237a30777af67c6410901ff9877d7d8a98a32ab9a115","index":3}]}
|""".stripMargin
val tx = transactionDecoder.decodeJson(parse(txJsonString).toOption.get).toOption.get
val bytes = ErgoTransactionSerializer.toBytes(tx)
println(Base16.encode(bytes))
val expectedBytes = "017e512111a7574f08da9d75d5e305e043fc87d28800534759617854b2936e37660009000c3c40430e3c4c0e430e00014c0e2200f7d4d0e8303d93c1d3908158ed2064e2009aba827c08c6a68a0689e665168b98292202070232ac157cd4469c6e043dc722e8511b295c3a22fd19f89dff753a9c5c5ab2ff5c030e201a246d9cc5eb2cdf6af82f06f5eb0dd13589f0be73b2b7a7d498d8d483b60b96040408050c413c0e0c4d0e02c0843d240008cd03b0b2ce2839747f5e4d3c304a0dd67b47f29649a48e19c5cbb7b93aad106911df0080ea30240008cd03a9fb4e3874c496d5495ce3690862a03ab4d249f097155f9945b01b4fb1bb454b000664b78fbcd50151f88eabd6eef4896f748169955fd62cdf265b253924e4959e1dfc0101080120070e33020000000000000000ffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000040008058092f40101fc3a84835aebb4c5479bd275ac22e85d9146976e3b1e086557eb8ec9dd93a8150004a0c21e0008cd03b0b2ce2839747f5e4d3c304a0dd67b47f29649a48e19c5cbb7b93aad106911df92c645000080b5180008cd03a9fb4e3874c496d5495ce3690862a03ab4d249f097155f9945b01b4fb1bb454b92c6450000e0e0ba16198b0b2d040004060402040404000e1101000000000000000000000000000000000400040004000400040002000420040004840104920104a0010460046604680460045e04c60104d00104c20104d80104d80104ca0104dc0104ce0104ca0104020400040204020402042004000402042004000e6e031005040004000e36100204a00b08cd0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798ea02d192a39a8cc7a701730073011001020402d19683030193a38cc7b2a57300000193c2b2a57301007473027303830108cdeeac93b1a573046eebdc83050005000404d812d601db6501fed602b27201730000d603e4c672020610d604b27203730100d605b27203730200d606b27203730300d607e4e3050c413c0e0c4d0ed608e4e3030ed609d90109434c0ed804d60b8c720901d60c8c720902d60d8c720c01d60e8c720c02a09f9f720b7bb4720d7304720e7b73059f720b7bb4720d720eb1720dd60ae4c672020707d60be4c672020807d60ce4e3000c3c40430e3c4c0e430ed60d8602720b7306d60eb0b472017307b27203730800830007d9010e3c1363b38c720e01e4c68c720e020413d60fd9010f0e958f7eb2720f73090004730ab3830102730b720f720fd610addb0c0e720ed9011004dad901124c13d804d614cbb3e4c67202090edb0702b28c7212018c72120200d615b17214d616997215730cd617da720f01b47214730d72168602b37217da720f01b4721472167215b17217018602720e7210d611e4e30207d612ccad831104730e730f7310731173127313731473157316731773187319731a731b731c731d731ed90112047d721202d1ededededededededed92a39a72049c997205731f72068fa39a72049c7205720691b17207732093cbdb6401e4dc640ce4e3066402addc0c1d720701db0c0e7207d901134c413c0e0c4d0e86027a7e9a8c721302732105dad90115413c0e0c4d0ed801d6178c721502cbb3b37a8c7215018c721701b08c721702830002d901183c0e4d0ed801d61a8c721802b3b38c7218018c721a017a8c721a02018c721301e4e3070e720893a0da7209018602720ae4e3014c0edad9011313b07213720bd901155ba08c7215018c72150201ad720cd901133c40430e3c4c0e430e8c8c8c7213010201a0da7209018602dad901133c3c13100c4c0ed801d6158c7213018cb08c721501720dd901164f4304d803d6188c721601d6198c721802d61a8c72180195ae8c721502d9011b0493721b72198602721a9a721973228602a0721ada72090186028c721602b28c7213027219009a72197323010186028602720ead720cd901133c40430e3c4c0e430e8c8c721301017210dad901130ed803d615b17213d6169972157324d617da720f01b47213732572168602b37217da720f01b4721372167215b1721701cbb3b3db0702dad901133c130c4c0e8cb08c721301720dd901154f4304d802d6178c721501d6188c7217028602a08c721701da72090186028c721502b28c7213027218009a7218732601018602720e7210db0702721172087211af720cd901133c40430e3c4c0e430ed807d6158c721302d6168c8c72130102d6178c721502d618ccb3b3b3b3721272128c7217028c7216027208d619b17218d61a9972197327d61bda720f01b472187328721a93da7209018602720a8c721501a0da72090186028c7216018602b3721bda720f01b47218721a7219b1721b8c7217019299b1720eb1720ce4e30404afdc0c1d720701a5d901133c413c0e0c4d0e63d804d6158c721302d6168c721301d6178c721602d6188c721702ededed93c172158c72160193c272158c72170193b1db63087215b17218afdc0c1ddb63087215017218d901193c4d0e4d0e938c7219018c72190290b0ada5d90113639593c272137329c17213732a732bd90113599a8c7213018c721302e4e3080593c2b2a599b1a5732c00c2a792c645000080897a1005040004000e36100204a00b08cd0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798ea02d192a39a8cc7a701730073011001020402d19683030193a38cc7b2a57300000193c2b2a57301007473027303830108cdeeac93b1a5730492c6450000"
println(ErgoTransactionSerializer.parseBytesTry(Base16.decode(expectedBytes).get).get == tx)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment