blockbook/bchain/coins/btc/bitcoinrpc_test.go
2018-06-14 17:27:03 +02:00

313 lines
28 KiB
Go

package btc
import (
"blockbook/bchain"
"encoding/hex"
"encoding/json"
"flag"
"fmt"
"reflect"
"testing"
)
var rpcURL = flag.String("rpcURL", "http://blockbook-dev.corp:18030", "RPC URL of backend server")
var rpcUser = flag.String("rpcUser", "rpc", "RPC user of backend server")
var rpcPass = flag.String("rpcPass", "rpc", "RPC password of backend server")
var rpcClient *BitcoinRPC
func getRPCConfig() string {
config := `{
"coin_name": "Bitcoin",
"rpcURL": "%s",
"rpcUser": "%s",
"rpcPass": "%s",
"rpcTimeout": 25,
"parse": true
}`
return fmt.Sprintf(config, *rpcURL, *rpcUser, *rpcPass)
}
func getRPCClient() (*BitcoinRPC, error) {
if rpcClient == nil {
cfg := json.RawMessage(getRPCConfig())
c, err := NewBitcoinRPC(cfg, nil)
if err != nil {
return nil, err
}
cli := c.(*BitcoinRPC)
cli.Parser = NewBitcoinParser(GetChainParams("main"), cli.ChainConfig)
if err != nil {
return nil, err
}
rpcClient = cli
}
return rpcClient, nil
}
const blockHeight = 1325168
const blockHash = "000000000000004ed0834f3de922e66d024ec4da9fcc2da17be61369cb6dc041"
const blockHex = "00000020624870e3ea6036a9a6e52a8eeaf8e0ff03e4eaee2b72469932000000000000008c585ae9e2acab0020e2440caaf9f73e7c8060d3bd689c646b5a919208d99058aa751f5b00ec5a19231e565d21010000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff200370381404aa751f5b084000000df7684a000d2f6e6f64655374726174756d2f00000000020000000000000000266a24aa21a9edcd297ed00be6d425c1b41e459bcfd25fd75a9c2ad8925e35f78dcda0ef4d5e01e10ebe04000000001976a9143d27951af09911d3f49f0211f78c894b66866d2788ac0120000000000000000000000000000000000000000000000000000000000000000000000000010000000001019d30178fe7557de700fb002bfd1cfb10b325be057ff46aeefe710f3b19292cf00100000017160014ff9e86fefd867d091ca4d5750998040bbf33107effffffff02c03b47030000000017a9148ebfcc7875903512f703362726cf55472e21dad687f4ea880a0100000017a9149da77b5b6e81f202a07e3ea00582e3046b26c8488702473044022055ebeb662dd15d3205c334b95d9d577a966b5ba2cc52f25cf3c61929193412950220279d2a50ac872803d4741c3bbcbd204fce2458cfed5841368bafbf22966d5e8e012103cd75ac2da3c97389a4422d7480cfe637fd1c5ce19a5f4df7b2931bafeb573d100000000001000000000101fe098f0844bba5202ce15a804123aa8fc52589080cd22a5a0ac4169ed92df75c01000000171600147b8404baf3b3d1416e71d5ecda84cf0c7e79ad30ffffffff02c03b47030000000017a9140853f99f8cbfead897e5d3834e036495386acd3d87b96c04fd0000000017a914647507f0caedaed6df36757ad28d170f29b95fe58702483045022100bde094da370bb2aeb191fa397570fbb2b26dde09d36e757a0a1df877c67fbeb4022007dc1e0b43448a89cbb919c90e7d036ab8e4e11d3b8affb53c88358cb8bf081c012103d24b1ddc91d69d08c2089e97b0202d134a799ab4aae3251d81e420f776f547b00000000001000000000101a687153d9a4519971077f6bb7088325b197c58d9f95c742512b5a7b8559609530100000017160014c62bbe3e5d4def22263450229f43d9a61339115cffffffff02391a0000000000001976a91441d8f7a941dca4c34e00d50ca6be574d642a3ad488acd017aa0e0100000017a914e36b5a4e4df8b8f9a10cce386447b5e671ead6e38702473044022016b0eff1ae82ed2c5a32fb1335f22fd51d60b0392bdb063a3d506a88de5292bf022024bc55ffa619bd0c5a36b6c69913dab4d1b34f2e5aa8fa548e0d564619770e0c0121039fddd73578117cd57f0b99bddf39dc94f265219dee040372942ebe964aa36ef30000000001000000000101b1922f0cab9698947e436d20bbecb8a15fdbdba7b8e2ad6a25be5ab78b9b1b7301000000171600148365fcacd3199e0cd70d98dc1e9ad7c0b5d279eeffffffff0280a4bf07000000001976a914bc7d3a15afb9a04b13efdf024b83442e7e07f3f488ac7afcd6030100000017a914743c3e586bb3b631464d20e01860f297c085f7348702483045022100d4a4088ea1096da3f95305616245fdd64b6ad3400d21480501b5fc444245cabe02205ce8abe30c4b45c0f25a1ac9975ae6eaef98b6c45c2450a3cf8858389993faf2012102a8cae4050b0b8301599ef4b6948ee813f07f758a3a0965a6af1f862e81a6df540000000001000000000101ce4fabd36456f17417e2068419183f2650379839618458aa2322e047286ffc580100000017160014eb101fb798eca9333ccc0b6984d1054abdd60002ffffffff0240d2df03000000001976a914abba3808b854c70b63ff038fcddfbafcb707713988ac8fb855090100000017a914c79fb05db54493d0e3ede7e1b6d710b042b3459f8702483045022100d55b3174cf031a409fad139ada8486005bdbce2ae425a67aec3a41a8a18f8d26022012b116f82985e382a1e8f5a766b38d531a4d8682202ae5c055aae4cc4a94b4a00121038f4d77101c53039712b4450117624d2d9310d1843185f647bc8628ec2fa64b9000000000010000000001012e6d38e1cf684d537dad988362159f03de685d6c3dd7479d468ab9066f6395d601000000171600140afef30070c9befac220f898be117e33c44d3789ffffffff0224fd3d00000000001976a914abba3808b854c70b63ff038fcddfbafcb707713988ac20b905140100000017a914a698131430776e0bd219832919fc85e2df6dd9d987024830450221009fb50e10f85ad349e4648fe71973815b9183f1a6b808ab3873d0307a2bd71b6c02206f80e7c431e6b3dc35848f7fe366a8a2f5dda1a9846e28fd5a88241b67ffd8800121032282b3b5a8077b73c3e2ee159810f021505c0ff3ba218b91047086fa873da99200000000010000000001015e8bd40d2153a20725dc5eb12cfde24e282e0e1bfbec66106eb255c064a13d02010000001716001433a8c4e5e52900b2fc57ebcd03ea34c3e28d6814ffffffff0220e9ef01000000001976a914abba3808b854c70b63ff038fcddfbafcb707713988ac6e7f200e0100000017a9143618c14d1aa2bb46bee0a59c377bc552d027cb3e870247304402203da945cc37c79ce5eec1d75adc0567473a12c2686663f8e832314100ad997492022017a7458b5b2c06dda4a5cece75e861aece1ecc55080e6f8043b606d9e592a94c012102584027b3b9ff3e64cd57baf50da0957c34336def87b98f61665dfe6d45705e420000000001000000000101fe304cca760fe189d79a8e5e311830d017bc8812161b9d24283c297a1ebbdbbe0100000017160014bce31ed63169644d9a227edd85d3405455001a99ffffffff0248fa7b00000000001976a914abba3808b854c70b63ff038fcddfbafcb707713988ac91af6f020100000017a914808b2cc1237ea31e19c60dba6e46c5d2bb6fa3bb8702473044022034732925a5c01e22cee03a544bd5fbe8d05a7be08e829a457872d1855377c186022012c7145f93af3553a524a30356b7d5a900a1c0c0ad6d14519f82a9febf8c1b24012102b53ad54b9b9e192bed46c24da6a8906cb176c5ad3679e12ce351317e55e81a40000000000100000000010123c6bdad841a097b93ccfa302330b4c70309c2a122847d62d3b4bfe3772601bc01000000171600149b71a55c68f56bf1bbe05910350808a9227d3411ffffffff0290f4f700000000001976a914e0365f8cf2319332778ec3cce6dc492a00b1856e88ac92449cff0000000017a914bce9a8c401614a26e8a85bd669239e076530712a870247304402201cfc6353c6f19d6df56c98f2068c9a948efa13b63958649a56313744c70de5a402206521a961ca5416df75422a48776be0eb38d6d1046897457a75d16047de1c4c38012103dab9885a7269b971886e819021f27dd2a4dcbcd0187d62bbbe38476cb444eb35000000000200000001ce48fcdbfc566ea622aa2da336657acceccf54f1d9ca7c79028b86cdd7caa283000000006a47304402204291e9e39a4867a430a65493a011ceb5cf2d26bc46a046e2ffb87cd0a386a88502201483f622a50b6ff4c72ace2ad0d2e22cd31ab0dde78e2eeb2f6190e42484f8c901210321bac8d9a7e4864cce64ddbef48f288e4211fca13831e7a12602c0539e98ea3afeffffff028a8b72030000000017a914c6953688a93ef58e65730492188115627ae0137287abc6e556260000001976a914e4fce41cd713b9ef2c5bedf1bb9927a22860b26088ac6f3814000200000001b4b685356ab5552f5cf2e7e92cc2c16a4618ed12d1f0887e4e4af6d428edf0ab000000006b483045022100c76cf3081c04eecbfd569c1859ad6dd0a5fec8b8ff6019be1c95a2aafcba000a02203649c3aaa7a478b9d530bb101d6a62322e6a18857e7e295d24b612c41fc2b8560121032aaec129afa2e84e9c7b4bebbc01ac95685c5d3c8e01a4e29df765476369115cfeffffff021c1dfb070000000017a914c695362d23fe7b1185504314afca7eae585e134a8794acda68000000001976a914a1bb4528486172f1cbdc67b234c81eb73232a4f888ac6f38140001000000000102ede32062d23747785d356984dc67c14c8ff75bb04d90ae47dd7bb5d5b8f9417d00000000171600147edbcdda98080eeb6e8a63c63da135498295c3cdffffffffb1c1e45760312e8a3852db2040d55ddcfca8574e399f91b788302c426ed24b97010000001716001464acbc88e62af1e51e3c31ad94433947f34b9cbeffffffff0280a4bf07000000001976a914abba3808b854c70b63ff038fcddfbafcb707713988aca4717efc0000000017a914fbda2c7bb5843b6e65b3ad246938df982891700987024830450221009019de71babe335456ed9336dddd0ec16dd0bd5f5c90a868a640e99f5d3ca98902202c60f4e83348ed8c19dfd4a92eeab2589e47945e3dca047890d40309ee3bb059012102b45e239d96f8504ae45a32af7c80f6164f7b9658166e318521ee822192fee3ef024730440220210c71905180fde5f9ae88a31326db690f96b2c5daf8fff5570ac298dee0a689022041f5f18dc6f364eb6f16c1fd5ed281094f06c36047f1290ef87df969394ebe2e01210289ffee9a06624297a176daf8198868ae5de59fdf5196f905bd4312b0b87ec3250000000001000000000102a4b8c14f271cfa77d5ecaed9c3026472a55ea6bca119e2ff7b04975326f5974001000000171600147edbcdda98080eeb6e8a63c63da135498295c3cdffffffffabcdf96b8ba187c24d70f98a2edfbf100821506212637f28b30a08efa970a4eb0100000017160014df7d60680e984aae4052e24bce8f17e4bfdcc532ffffffff0292fe1e00000000001976a914abba3808b854c70b63ff038fcddfbafcb707713988ac13e796110100000017a914c9e67d2b78a38857c786ea9a2fc3e64cb6e775648702483045022100a6910d3a3b64545a44e097a3739b1206095602fa796afc51f81b249d1293ad0a02206cdae51853b59ca52003f4e54ea8ae418b6b4d036cbe1fdd78677efe8eddb318012102b45e239d96f8504ae45a32af7c80f6164f7b9658166e318521ee822192fee3ef0247304402202684a6f59ee255f3f5e9a9209a735bf2aaa818d47add7c3f7a5590623bd2211c0220452bf2fb8d0dc0380862988f0f098c21e861004e02da7bd1fc6bea4e7f33d2dc012103f308867fda821467f77d372791644225174ae16daba86e55754c150a8d5aa40d0000000001000000000102c997f74e9ad52a44446302381e0fa6de080dadadf55842588bde1be8a47b438000000000171600147edbcdda98080eeb6e8a63c63da135498295c3cdffffffff563c9674a40bf1aa1063f767a50d2288146116fe869012ad3dad03d71e74a8800100000017160014af97d082fd5de049bce2991d9dcaa5d3035a1b04ffffffff0290f4f700000000001976a914abba3808b854c70b63ff038fcddfbafcb707713988ac74b77b030100000017a914fb1e0f36e2d8e91a43c7faba7dae18a610070c4a87024730440220538fcd8fbbf39b813372a7ff6251f1d22c9e940f54272ab525e1d1dc5f03049b022066cc5a1c445573e7e069fdaf3aa33d6665ef5f7936cb155cfd9093e888ca9461012102b45e239d96f8504ae45a32af7c80f6164f7b9658166e318521ee822192fee3ef0248304502210089e579ce52f765c8de6033e1cee93c94aa9a5ef3a194fec12885ed163dc60688022050aadd6aa170c6cfb58f406497949b0140327b4889ca7e082bdcfa8cc03d487f012103fb1a838f38d587dea0532f4a15a39b96e411cdb37c5160ba576a4cb0072db019000000000100000001945db9278cf52925f081c248718e8cfda14e6e6fa3927f995c931fcd46c34e31010000006b483045022100be6f7c570fbea321589921a68f36d15083037d485391e9747fc5a8575b39a686022058424c9bc0953f6e5025dfb2e1e871ec4251b8c23edaa74209084a80fa672876012102d8e60ae936d05571a895e87153d4e9e6cd1edda25027082827c48be1732eea0cffffffff0240420f00000000001976a914d98c258af45dac58c9dfae48467a42a6abae80b588ac5087e605000000001976a9145cd00e25286f599b113955a4df4ea4652c9c1f7888ac000000000100000001efc34b31c654016863b41387a427ef3244c327baee28328aa774ab98778b3ae9010000006a47304402202688e2cf2405141ba26daae44c38dd01eb843174ecc8eeced9e1eebb625e5a4f02206f73df2befc0488aae2332c8b9218e2b68eb7d16c9866e5356454cf69b3e8ba20121035bfe51970a53fc082496bee793e0867ccfd3300ed1daa31c72b2b6758a808054ffffffff02404b4c00000000001976a91416d70844e7edc66c6310b43e2542794936554fb688ac4ba24a05000000001976a914e5db6283f20c0f46cc7bcb513c585db342fb5a2988ac000000000100000001515b21ee49f5ccf9ac47f3ac48f0583d85047cc9d61d94a9dd5302b523fed5a2010000006a47304402200bf35a5c489d82099d5e88f76b39c741909512a5f364962e21c1212e547a9e8a022069d7a437c4f1ad7cfe0a0222e8bda2f0e4c3e96af9d8686fbcc3778ebc4d1663012102be0e658dfe2fc44dfb002ded5b940b7652c337fae5d0bb6e9d03eef015122d74ffffffff02404b4c00000000001976a91462c53f3d55fa12c2c29b19abeb0628bbdfdada2788acb951fe04000000001976a9144de5927116991ba650517b269113143a4f28a70c88ac0000000001000000010c019de34ce1a570afcf91f868f67d5b096d7f1c7c87db21058566c8ce2c7c01010000006a473044022037b5f8a4c6093776ef9620ce4e507c127e8f7ea02a957d53a6651e65db29d5d302200505154be5f75d58c0b3ef281377c505efdcf93486709e9bf0e7dfd1c1a0295701210338635752203772f6e9439b6c3a938ac2fb0d4b3899f362d404eed74e6411671effffffff02404b4c00000000001976a914590cac3835df1b828525c5ef8d68c764132211d488ac2701b204000000001976a9149bf15f5d0b330b7d0e8e95876f4c57d00752c9e788ac0000000001000000018a252a4cb4c3eaee96207be472c8b8015dffd019dd7bc8dfc41c837a46d301d1010000006a4730440220111bd379c5f3159c782a8929d0d926a4032ed370fafb166f382c78a9462521a6022046f300312aec1dde470a9738535ff9030ba10d1900c1af48f16e14543ba03e2c0121021026601cca75ae27974c43b99bbcd63e0a00d6c5bf66c2fc7831636eb1280f6dffffffff02404b4c00000000001976a914cdc8204f4f50e94f735bd80fa8b1a33271acd2ab88ac95b06504000000001976a91466aa2c28ca122d84205eba70cf9fa320974aec6f88ac0000000001000000016918f2e5ce992d39e517a6188a77ecce5a00b012d08a8a49f0d062ab0b188438010000006a47304402204258d87bfa00cd1d770a4dbd8a175764f035d5097359b24e426928de9d017b92022079ee80d17f99d68e53b623fc9a07415371f8676428cf36325ba82fd9e7da7764012102ec26bcc4b6e199d1dfbeeabf95825ea9350ace8101a00835c08907564a2e5784ffffffff02404b4c00000000001976a914860a65e5c4999b75141c287cec136faa0859878c88ac03601904000000001976a9144816ed809550c2b1d0d1dd068fef8942e4fc964b88ac000000000100000001f2ade65ef33bd72a49bfd815eed2ed00e29b0b2a57a716575e9edd39bb7bc8b8010000006a4730440220122dcb5648cbb7c436d39eac58a62c5d0d5a3c6f11f99244e7b039e1f973006902207da8fc6025a03fdf5db1731aea6cc582d0c1afb0d2844c5e4e937f632d24475701210358af44865cdfbf2745110f2bdd28c0880e33c7ebe7fe7963a0edfcbc2f5660e3ffffffff0180edfa02000000001976a914517feda2b1dfd61ee9f249e2da87d4681e1b5e1088ac0000000001000000000101253811808c41ee6c23ed34eb4664c6c9bf1791fb9efc92f56a0f3d5d66fd40f00000000023220020aa6d49a975b86eab9198687218bd78b5ad426d0b8e5e0e5c94ffa7f1267cc719ffffffff02201d9a000000000017a9148a0170de7d432cf459f7e4bdced2578ab6e4cf788746b152010000000017a9143e60cf49cf2529d22db15c7809879b4071860f8f870400473044022020be7d3c62ff4ac3f14c36962c16cb2e9ea9d2b746176ff715073f942e4014f9022013dd805d9b76066e3787298c384441117c952af6fc0c9501405e61459486e22801483045022100b178e9d2808fa9db15aca9bcbc29c513512fa0145cbdde4174090d1cf1e58c2a02200c2a4f2a7bb5c9fb6c7bcfa30f13704e2df5c930695598874ba14b04938bf5a20169522103ad3fd310fef767d07d98f646a75357a42d687f8b3d26dc74426b7a35e001d2f521027485713dd3e8c0eebf1904c860f2e44876d9076ba1ba28df310e7e653d48d4da2103c2ea101de6f0fbfadce02bf94bb5b52ccceb576c2f4c1a36086b5e34a817db1d53ae7038140001000000025b0551bd0fffcf55881e285e15b364ab9a831d2494d2eb7a163a4bbd6f551151000000006b483045022100dff500e8c060a9c8810483d4ada8f91c0b844e92778cc762300040870109c0be02207029fa781ec37ddeb0ffbfa7160e625afdd126f30ec11fb9bc25f4d2164933bb0121023c6017ab9f471a69157180c5e30b9aef2ff73ea2a1a774c53a975e2557536314ffffffffd49a58913818610b0aa065d4f32995863d216c44040a49d454f6b7eeb65c9adc010000006b483045022100dce24b819b70f920d0bb60fa1241fa14f2500412a60aceeaae2610e1593b5e3c022041fdc5a02dc26af043bea27713f1245340b98bd47aa283e23b96ecc4aae157a4012102d18a88bcf5f65d937de7d9bc24d2f492a55216087262bf4683d0055dd0521a56feffffff02da869800000000001976a914b4f1349ec3e7c751c6720e2c0783e3449e21e36888ac80fe210a000000001976a914b4f1349ec3e7c751c6720e2c0783e3449e21e36888ac000000000100000001dcdc6e02bf826f5c783176abc6842f130cc309e5a5be994bc83d86711b0a23e900000000fd670100483045022100cdaf94a9a3aed27f5ecd9f2517525ace8483d45010ebc2f61c6b854e07a0164f02203c746ae190011b987aa56e483d2baff1181a60480a714dacea36981df9b39011014730440220127b08db48809a3cee3d9bb6fae327f25196a94535dbe2dbf9f58c3078bc67260220091c1afb5a782e19b390c544216ec2c0379efc314a9d3a44e36d1a4a770358370147304402203f71b8d47b12eb29b9d5da23c1361fe0577ecef7ccadbbe61d004513f89e084202206b6bbf7a29b6f7f346a11123c090ee60b96428585dd5e31339a853d6883a6547014c8b5321022666ff58d872f45d5f38022af3e8ad21f7a109d70d718171111b035542332f202102378f6c2051e46ac2f8db79929bf24440e45c9fb985bfd5e8a71026440623f5e92103ced1ba9b2f46b49168b38f3f950a5a3cdf15d5d13e8e5a2ebf6a28d1beb6b2562103528901b8cd76a4b9fb270d020706619543d9a75dc2a9c717d397d3838b69e98654aeffffffff02309e08010000000017a914a3d3eea26a00225d76b089a690ae5f48471e5733870000000000000000326a3045584f4e554d01007445140000000000c5a6986d65b7ae36ef88ed04321f5f97eb542c41aed81287300ab679121e04eb000000000100000004d02217d980e9d05b7b4ee19c1f7a62865253af470b829d73915be5e30c70e6f9010000006a473044022027c8099b947fab212c6c545c34e91f7711e005f7868a1f7b3b503fd3cc3a6f7102207961d6d1e57506fbbce9bb6eb896b10742e7ff6c2929150a313ee7c0cd019754012102de34ad2750f245b6062d9855a81bb8efc59623a1a24a5c75493e6e7af9f821d3ffffffffd058ace6bd41eaf20cf492250415256d77838fdb0ad6a11a526cc3a8b91cd8c1010000006b483045022100b0ae22e62379380d0c1c27a5198fb1d5fe07da04263d7a90e873ea842001c8b402200b5aa6672ed3e61a231147939c1cd0fc9ba0ae8e0b720cf43fd9ccdffa842bb0012102de34ad2750f245b6062d9855a81bb8efc59623a1a24a5c75493e6e7af9f821d3ffffffffa727c367ed7a856c7c8cf2c0feeb0e77ce74608039fd43708479abd3103bede7000000006b483045022100bb39f9953d2c619d1535196ff6aacf0ba9698dba0e08961a30c66c931b4091c6022062f4a0a74250fb492d57a58599da1ff78e75d88bb5afa0bafd4e939f7b167ee5012102de34ad2750f245b6062d9855a81bb8efc59623a1a24a5c75493e6e7af9f821d3ffffffff6927ed42617e5822ee33d01de069e51f4c99cfb411259b27b9d9ff48db685093000000006a4730440220553a42bbaf6c69e7020465c7806497fe635d105ae9009d583dcd72474a19d727022013e4a1fc7880f7b69bfb9ef1ec02156b838278da9078f7d9d134933997842af4012102de34ad2750f245b6062d9855a81bb8efc59623a1a24a5c75493e6e7af9f821d3ffffffff02f0b9f505000000001976a9149b578a521259a9c5c95b5aa61d80f3568728324688acb51f0000000000001976a914cd47750be480bf39d8424b5c72b1275d64c7b86688ac0000000001000000014a64e0a420f2cebcf06c246bb53740ca72a821e4774d8d08d1a8fb7982b60582010000006a47304402201611a4a8df48f5742d21dcef2681c15c34d8a5a14fe716fb0fe672067c38270802206c57a79e2ebc0d437d978065a2236588f7c6196cf218af5d02eaa33a605a0d130121028960fbedf80dd4e6550b97238e401f91365f11f0bfe38a7084935ec520ea2441feffffff0210270000000000001976a914b0f47436699555443eb64b8df066fa9eb19a586188ac40cd8003000000001976a914a32a9f5699e088fb908bdcea3468c3615724298d88ac6f3814000100000001da4031ba4a0571cfd6d437359563ec594560ee91bb85632e8d03256448321699000000006a47304402201a0c705f42f916933c27a9aa7f6c9dcace7b44fafa55e09c38b4ffacb33d8a970220137df5bc65341d0cb37620ed94c7c164ac1d7410a320309853dccea7fbd4c728012102db7f8f083a60f48ff7e499a5458d5ed8188d5f7c8299c51077bc6dd0f6221857ffffffff01a2a3bf070000000017a914a9974100aeee974a20cda9a2f545704a0ab54fdc87000000000100000001a89f1120aa1d2c8eaddcacaa498d9b31089a127475325ff8ba30abd8beaf1ac0010000006a473044022057e2bdfb92b58ec20e5a753cee265c36a7bfce4a8ec2062954a0d6e3659bb21f02203a47b1de095a7fbd3e24f4759d44c64a2155c1a385e364e60ae5af8995621b5d012102b0932b4625f1995e23b1a30d287343aa52051d19ab49584aecca6dffa3bf02fdffffffff02822d4904000000001976a9147b7cb7f07e14d218b3358a0a710d5d5b254e82be88acb8500100000000001976a9146d8c28e1ebaac2f0520a9b3a1a3424fb2b22996e88ac000000000100000001a855dfc4a656a9e2e95b489cc72b98d65238d96a2573f592f9123cf089463b40010000006b483045022100e242b0fcfdda1527683793c16c2e6898e2b750c10bc3c458fd904f202c2d25780220017993d6ab2ae289574b9d4e2e9d85491a6ba7d0bc9a636a5826eef770299967012103d5ec209d89bfaa92eb510af8aaec1b85dfc62f812516a49de598bc8d7babbc64ffffffff0237ec4a06000000001976a9144211fd785fb0ee468000a2345246daca6bf3a4c888ac30284300000000001976a914a8005a43e2e02d2330867ca4aab2d242d8cde25a88ac0000000002000000000101134db4ebf51f62c2334ceac117698ceb16b10323d2bd7c6c10bb6ac7af4559bb0100000017160014ba4121faf7d7b542931120e62b423bc374507860feffffff029ce00000000000001976a9142745c02c63537727c5d4cbd5eebb47d494fbd68c88acea7279020000000017a914ab074e8ce89023c0b8f70e486561ed2ae3704ec6870247304402205d8ba08ce38df9cceafbbe3dd0e10173527e7f5b5ca28273635536707b539be702203e71f885c2e3572b537f1c2a0694b06849ce74eaf0f77c7bdff6f45b996cab0c012103aac4ccd91b48bbd7220bc008f5d3d1328f21d4e8908f64d6c5b0bfa5da1c7b0d6f38140002000000000101408b540a6de3509ecf520da4659d84e4a170c87f16f0966cce1dc7e27c64f1700000000017160014362c24189a5ff392fbe1293ad8ab988352bebd14fdffffff0262dc01010000000017a91483b0e44e3ccbf3a3c1f8ea1ecb2c8d06e206163687809698000000000017a914d5d4a8105ddf4cf5b02f17285c52203a761cadb58702483045022100a6e4b296db064e2da8f9fc43b704c26f0fb8429c4fc4e98baf31b6fd4d1ea91a0220290f45e2d1d1fc23b000a9e468aebfdcb78cbb18c69d73c90d8a4ce58209b9b2012103b76d2bc1d902389a4784bf39dc092f4656b2ef17efa6f2a15dcd71f88682550f6f38140002000000000101df3cdc246ee4735be54fe15ab2eedcc49bba0a34072581d8c0e98b2b0903952801000000171600147a423b2f4a4c0ca5f44e851c9717f481579fae44feffffff0220bb5600000000001976a9142745c02c63537727c5d4cbd5eebb47d494fbd68c88ace46fcf050000000017a91478f93f16c50054fce588f208a095003df18ca4858702483045022100a8f978153194a940371f59e0b6976d7e298e1135fe15eb1e0082e7f382a7095302206660f64d7436899f117bafee8939e3b4aa79c6f333e9ddc8fda4d526cff573170121034ca9661305158562edd6458860528682e669c856b2080457fa0ea1371bb67cb56f381400"
var blockTxs = []string{
"e1179f205aabbf48dc2ce4ebd9ed255571b0578e4de551f6574a50cb81120007",
"00a5aa2891d41af9eb1dc30c940f142a609ecab8f370eb0874ba7d32252d1b1b",
"1c519d80804dd17258cfc801bf2c875607956fc9f065a664f43e88d53f80af6f",
"b10c1e2f7c8a6b10fddf94260aff0f8a5f56e33c8d0de48c49a72eb8418c3f6e",
"ba85ca543b290deb84cde9c4ca53614dbe557a3dede5d0adb141f803f8e82f34",
"60dfc2c9cc184ae68ca9e540ab4393d9d2179d060e2ac290f29560c6a1360f51",
"3a40bca678653ae8f7f6d2771b571d5ace1a258056b99e3fd361a10f1016bc53",
"4d4e495f3329801d92c7e3dc9874a372576bf3548decf884ede388143980ecab",
"74ba4bee8d559e4d8b4859c086b0ea5f2c36bcabc95d8578e775f065f70943b8",
"32bcc281f081e172dcb40ad137564724bd9486095813b78990d1d986173ac3c6",
"b6e77c59f4a988731d9b8520e0f4971223e622946eb12e28cc2bab72f1e9c2f8",
"0bc8f39da5d5300a2728b45edb18c8219e94a8b27a2e8074f6c5c10a00d99788",
"8329b31d2a490d57980afcf5c7df4574ce57f952aef6f5aecb3b7786f5c9f255",
"e559c2fd0f4e8aebe28fcb6dbb099fc6ee92d726d74fda28522f52bc1490a470",
"3005378ee85fc905a1812bdfae4b2e0e9bb09f5867a53fd73237bb319a1774aa",
"ebea245b9e4d96fab65c938547a9b3ffd03659b92b8ae4fcdfe4ac9bc325c0a2",
"a2d5fe23b50253dda9941dd6c97c04853d58f048acf347acf9ccf549ee215b51",
"017c2ccec866850521db877c1c7f6d095b7df668f891cfaf70a5e14ce39d010c",
"d101d3467a831cc4dfc87bdd19d0ff5d01b8c872e47b2096eeeac3b44c2a258a",
"3884180bab62d0f0498a8ad012b0005aceec778a18a617e5392d99cee5f21869",
"a00200e57bed4fbd193c4cad49549d311282fee9a82956083353a2874f9bfd9f",
"d32ce7a9413111fb2e3578472d520eb1437db701f20256e3afd37b7c0a6d67e6",
"fed1df6d23a40e1a1f26820bbe35febb668aa2240902f1fd17b31a84dde6eb39",
"5bef621ad6d0970939ae36270a3228d3c315f8008fb04eebffab5f7a3589d114",
"411e7f3f4cae4125c8933403809771ebfcaa088f6ef773e5a412ead8639fb515",
"d53858bbbbde4518ea92abda93ac5d01e5122d420a468e6d076244edd99bcea1",
"b5fc4d963805b439d11f06b5d5d89ce3aac225e7145d1673d20d3d37a12c61dd",
"c8d7332377d4bf43c232bc7afc3d7e3aacf13523d1c8488f68f530e58e6cfd88",
"3c21a6b7e3810ca10efac45446cd2b7ef0c9848ac589be7375b61ea5aabbbea4",
"5a25c2b70e2194e05a6208c99343ebe0fad970dd19f3f9cca88aaf77ab9e4658",
"031e3c08ebdcafccf6dc5d7ff1161cd5314424d0a943d2c22a5a2109286e332d",
"4992d16008aa3050b3e2e4aab67e488eb338850ff1c348367ae3d089d8d67a52",
"beb3e71b8da7da7917228f5ce8a88afdc45836c421b053dde24d367865326bd7",
}
var txDetails map[string]*bchain.Tx
func init() {
var (
addr1, addr2, addr3, addr4 bchain.Address
err error
)
addr1, err = bchain.NewBaseAddress("mwAxva7xAiQ3VXFsCG6svsKQ2Teva7PBjJ")
if err == nil {
addr2, err = bchain.NewBaseAddress("2NBemvVdincDv9GLYRxXy1gXquZfx7SH4ZS")
}
if err == nil {
addr3, err = bchain.NewBaseAddress("mx1gsqbp2TBHkXaApMTncTamoWagYcDft8")
}
if err == nil {
addr4, err = bchain.NewBaseAddress("mx1gsqbp2TBHkXaApMTncTamoWagYcDft8")
}
if err != nil {
panic(err)
}
txDetails = map[string]*bchain.Tx{
"e559c2fd0f4e8aebe28fcb6dbb099fc6ee92d726d74fda28522f52bc1490a470": &bchain.Tx{
Hex: "01000000000102a4b8c14f271cfa77d5ecaed9c3026472a55ea6bca119e2ff7b04975326f5974001000000171600147edbcdda98080eeb6e8a63c63da135498295c3cdffffffffabcdf96b8ba187c24d70f98a2edfbf100821506212637f28b30a08efa970a4eb0100000017160014df7d60680e984aae4052e24bce8f17e4bfdcc532ffffffff0292fe1e00000000001976a914abba3808b854c70b63ff038fcddfbafcb707713988ac13e796110100000017a914c9e67d2b78a38857c786ea9a2fc3e64cb6e775648702483045022100a6910d3a3b64545a44e097a3739b1206095602fa796afc51f81b249d1293ad0a02206cdae51853b59ca52003f4e54ea8ae418b6b4d036cbe1fdd78677efe8eddb318012102b45e239d96f8504ae45a32af7c80f6164f7b9658166e318521ee822192fee3ef0247304402202684a6f59ee255f3f5e9a9209a735bf2aaa818d47add7c3f7a5590623bd2211c0220452bf2fb8d0dc0380862988f0f098c21e861004e02da7bd1fc6bea4e7f33d2dc012103f308867fda821467f77d372791644225174ae16daba86e55754c150a8d5aa40d00000000",
Blocktime: 1528788394,
Time: 1528788394,
Txid: "e559c2fd0f4e8aebe28fcb6dbb099fc6ee92d726d74fda28522f52bc1490a470",
LockTime: 0,
Vin: []bchain.Vin{
{
ScriptSig: bchain.ScriptSig{
Hex: "1600147edbcdda98080eeb6e8a63c63da135498295c3cd",
},
Txid: "4097f5265397047bffe219a1bca65ea5726402c3d9aeecd577fa1c274fc1b8a4",
Vout: 1,
Sequence: 4294967295,
},
{
ScriptSig: bchain.ScriptSig{
Hex: "160014df7d60680e984aae4052e24bce8f17e4bfdcc532",
},
Txid: "eba470a9ef080ab3287f63126250210810bfdf2e8af9704dc287a18b6bf9cdab",
Vout: 1,
Sequence: 4294967295,
},
},
Vout: []bchain.Vout{
{
Value: 0.02031250,
N: 0,
ScriptPubKey: bchain.ScriptPubKey{
Hex: "76a914abba3808b854c70b63ff038fcddfbafcb707713988ac",
Addresses: []string{
"mwAxva7xAiQ3VXFsCG6svsKQ2Teva7PBjJ",
},
},
Address: addr1,
},
{
Value: 45.90069523,
N: 1,
ScriptPubKey: bchain.ScriptPubKey{
Hex: "a914c9e67d2b78a38857c786ea9a2fc3e64cb6e7756487",
Addresses: []string{
"2NBemvVdincDv9GLYRxXy1gXquZfx7SH4ZS",
},
},
Address: addr2,
},
},
},
"5bef621ad6d0970939ae36270a3228d3c315f8008fb04eebffab5f7a3589d114": &bchain.Tx{
Hex: "01000000025b0551bd0fffcf55881e285e15b364ab9a831d2494d2eb7a163a4bbd6f551151000000006b483045022100dff500e8c060a9c8810483d4ada8f91c0b844e92778cc762300040870109c0be02207029fa781ec37ddeb0ffbfa7160e625afdd126f30ec11fb9bc25f4d2164933bb0121023c6017ab9f471a69157180c5e30b9aef2ff73ea2a1a774c53a975e2557536314ffffffffd49a58913818610b0aa065d4f32995863d216c44040a49d454f6b7eeb65c9adc010000006b483045022100dce24b819b70f920d0bb60fa1241fa14f2500412a60aceeaae2610e1593b5e3c022041fdc5a02dc26af043bea27713f1245340b98bd47aa283e23b96ecc4aae157a4012102d18a88bcf5f65d937de7d9bc24d2f492a55216087262bf4683d0055dd0521a56feffffff02da869800000000001976a914b4f1349ec3e7c751c6720e2c0783e3449e21e36888ac80fe210a000000001976a914b4f1349ec3e7c751c6720e2c0783e3449e21e36888ac00000000",
Blocktime: 1528788394,
Time: 1528788394,
Txid: "5bef621ad6d0970939ae36270a3228d3c315f8008fb04eebffab5f7a3589d114",
LockTime: 0,
Vin: []bchain.Vin{
{
ScriptSig: bchain.ScriptSig{
Hex: "483045022100dff500e8c060a9c8810483d4ada8f91c0b844e92778cc762300040870109c0be02207029fa781ec37ddeb0ffbfa7160e625afdd126f30ec11fb9bc25f4d2164933bb0121023c6017ab9f471a69157180c5e30b9aef2ff73ea2a1a774c53a975e2557536314",
},
Txid: "5111556fbd4b3a167aebd294241d839aab64b3155e281e8855cfff0fbd51055b",
Vout: 0,
Sequence: 4294967295,
},
{
ScriptSig: bchain.ScriptSig{
Hex: "483045022100dce24b819b70f920d0bb60fa1241fa14f2500412a60aceeaae2610e1593b5e3c022041fdc5a02dc26af043bea27713f1245340b98bd47aa283e23b96ecc4aae157a4012102d18a88bcf5f65d937de7d9bc24d2f492a55216087262bf4683d0055dd0521a56",
},
Txid: "dc9a5cb6eeb7f654d4490a04446c213d869529f3d465a00a0b61183891589ad4",
Vout: 1,
Sequence: 4294967294,
},
},
Vout: []bchain.Vout{
{
Value: 0.09995994,
N: 0,
ScriptPubKey: bchain.ScriptPubKey{
Hex: "76a914b4f1349ec3e7c751c6720e2c0783e3449e21e36888ac",
Addresses: []string{
"mx1gsqbp2TBHkXaApMTncTamoWagYcDft8",
},
},
Address: addr3,
},
{
Value: 1.7,
N: 1,
ScriptPubKey: bchain.ScriptPubKey{
Hex: "76a914b4f1349ec3e7c751c6720e2c0783e3449e21e36888ac",
Addresses: []string{
"mx1gsqbp2TBHkXaApMTncTamoWagYcDft8",
},
},
Address: addr4,
},
},
},
}
}
func TestRPC_GetBlockHash(t *testing.T) {
if testing.Short() {
t.Skip("skipping test in short mode.")
}
cli, err := getRPCClient()
if err != nil {
t.Fatal(err)
}
hash, err := cli.GetBlockHash(blockHeight)
if err != nil {
t.Error(err)
return
}
if hash != blockHash {
t.Errorf("GetBlockHash() got %q, want %q", hash, blockHash)
}
}
func TestRPC_GetBlockRaw(t *testing.T) {
if testing.Short() {
t.Skip("skipping test in short mode.")
}
cli, err := getRPCClient()
if err != nil {
t.Fatal(err)
}
d, err := cli.GetBlockRaw(blockHash)
if err != nil {
t.Error(err)
return
}
blk := hex.EncodeToString(d)
if blk != blockHex {
t.Errorf("GetBlockRaw() got %q, want %q", blk, blockHex)
}
}
func TestRPC_GetBlock(t *testing.T) {
if testing.Short() {
t.Skip("skipping test in short mode.")
}
cli, err := getRPCClient()
if err != nil {
t.Fatal(err)
}
blk, err := cli.GetBlock(blockHash, 0)
if err != nil {
t.Error(err)
return
}
if len(blk.Txs) != len(blockTxs) {
t.Errorf("GetBlock() number of transactions: got %d, want %d", len(blk.Txs), len(blockTxs))
}
for ti, tx := range blk.Txs {
if tx.Txid != blockTxs[ti] {
t.Errorf("GetBlock() transaction %d: got %s, want %s", ti, tx.Txid, blockTxs[ti])
}
}
}
func TestRPC_GetTransaction(t *testing.T) {
if testing.Short() {
t.Skip("skipping test in short mode.")
}
cli, err := getRPCClient()
if err != nil {
t.Fatal(err)
}
for txid, want := range txDetails {
got, err := cli.GetTransaction(txid)
if err != nil {
t.Error(err)
return
}
// Confirmations is variable field, we just check if is set and reset it
if got.Confirmations > 0 {
got.Confirmations = 0
} else {
t.Errorf("GetTransaction() has empty Confirmations field")
continue
}
if !reflect.DeepEqual(got, want) {
t.Errorf("GetTransaction() got %#v, want %#v", got, want)
}
}
}