| 74 | } |
| 75 | |
| 76 | PYBIND11_MODULE(_blocksci, m) { |
| 77 | m.attr("__name__") = PYBIND11_STR_TYPE("blocksci"); |
| 78 | |
| 79 | TypenameLookup nameLookup; |
| 80 | |
| 81 | py::class_<Blockchain> blockchainCl(m, "Blockchain", "Class representing the blockchain. This class is constructed by passing it a string representing a file path to your BlockSci data files generated by blocksci_parser", py::dynamic_attr()); |
| 82 | py::class_<uint160> uint160Cl(m, "uint160"); |
| 83 | py::class_<uint256> uint256Cl(m, "uint256"); |
| 84 | py::class_<Block> blockCl(m, "Block", "Class representing a block in the blockchain"); |
| 85 | py::class_<Transaction> txCl(m, "Tx", "Class representing a transaction in a block"); |
| 86 | py::class_<Input> inputCl(m, "Input", "Class representing a transaction input"); |
| 87 | py::class_<Output> outputCl(m, "Output", "Class representing a transaction output"); |
| 88 | py::class_<EquivAddress> equivAddressCl(m, "EquivAddress", "A set of equivalent addresses"); |
| 89 | py::class_<ScriptBase> addressCl(m, "Address", "Represents an abstract address object which uniquely identifies a given address"); |
| 90 | py::class_<script::Pubkey> pubkeyAddressCl(m, "PubkeyAddress", addressCl, "Extra data about pay to pubkey address"); |
| 91 | py::class_<script::PubkeyHash> pubkeyHashAddressCl(m, "PubkeyHashAddress", addressCl, "Extra data about pay to pubkey address"); |
| 92 | py::class_<script::WitnessPubkeyHash> witnessPubkeyHashAddressCl(m, "WitnessPubkeyHashAddress", addressCl, "Extra data about pay to pubkey address"); |
| 93 | py::class_<script::MultisigPubkey> multisigPubkeyCl(m, "MultisigPubkey", addressCl, "Extra data about a pubkey inside a multisig address"); |
| 94 | py::class_<script::ScriptHash> scriptHashCl(m, "ScriptHashAddress", addressCl, "Extra data about pay to script hash address"); |
| 95 | py::class_<script::WitnessScriptHash> witnessScriptHashCl(m, "WitnessScriptHashAddress", addressCl, "Extra data about pay to script hash address"); |
| 96 | py::class_<script::Multisig> multisigCl(m, "MultisigAddress", addressCl, "Extra data about multi-signature address"); |
| 97 | py::class_<script::Nonstandard> nonstandardCl(m, "NonStandardAddress", addressCl, "Extra data about non-standard address"); |
| 98 | py::class_<script::OpReturn> opReturnCl(m, "OpReturn", addressCl, "Extra data about op_return address"); |
| 99 | py::class_<script::WitnessUnknown> witnessUnknownCl(m, "WitnessUnknownAddress", addressCl, "Data about an unknown witness address"); |
| 100 | |
| 101 | py::class_<std::any> anyCl(m, "Any", "A generic class representing a BlockSci type"); |
| 102 | |
| 103 | auto clusterMod = m.def_submodule("cluster"); |
| 104 | py::class_<Cluster> clusterCl(clusterMod, "Cluster", "Class representing a cluster"); |
| 105 | py::class_<TaggedCluster> taggedClusterCl(clusterMod, "TaggedCluster"); |
| 106 | py::class_<TaggedAddress> taggedAddressCl(clusterMod, "TaggedAddress"); |
| 107 | |
| 108 | py::class_<GenericIterator> genericIteratorCl(m, "GenericIterator", "Class representing any blocksci iterator"); |
| 109 | py::class_<GenericRange, GenericIterator> genericRangeCl(m, "GenericRange", "Class representing any blocksci range"); |
| 110 | py::class_<GenericAddressIterator, GenericIterator> genericAddressIteratorCl(m, "GenericAddressIterator", "Class representing any Address iterator"); |
| 111 | py::class_<GenericAddressRange, GenericRange> genericAddressRangeCl(m, "GenericAddressRange", "Class representing any Address range"); |
| 112 | |
| 113 | |
| 114 | RangeClasses<Block> blockRangeCls(createRangeClasses<Block>(m)); |
| 115 | RangeClasses<Transaction> txRangeCls(createRangeClasses<Transaction>(m)); |
| 116 | RangeClasses<Input> inputRangeCls(createRangeClasses<Input>(m)); |
| 117 | RangeClasses<Output> outputRangeCls(createRangeClasses<Output>(m)); |
| 118 | RangeClasses<AnyScript> addressRangeCls(createAddressRangeClasses<AnyScript>(m)); |
| 119 | RangeClasses<EquivAddress> equivAddressRangeCls(createRangeClasses<EquivAddress>(m)); |
| 120 | RangeClasses<script::Pubkey> pubkeyRangeCls(createAddressRangeClasses<script::Pubkey>(m)); |
| 121 | RangeClasses<script::PubkeyHash> pubkeyHashRangeCls(createAddressRangeClasses<script::PubkeyHash>(m)); |
| 122 | RangeClasses<script::WitnessPubkeyHash> witnessPubkeyHashRangeCls(createAddressRangeClasses<script::WitnessPubkeyHash>(m)); |
| 123 | RangeClasses<script::MultisigPubkey> multisigPubkeyRangeCls(createAddressRangeClasses<script::MultisigPubkey>(m)); |
| 124 | RangeClasses<script::Multisig> multisigRangeCls(createAddressRangeClasses<script::Multisig>(m)); |
| 125 | RangeClasses<script::ScriptHash> scripthashRangeCls(createAddressRangeClasses<script::ScriptHash>(m)); |
| 126 | RangeClasses<script::WitnessScriptHash> witnessScripthashRangeCls(createAddressRangeClasses<script::WitnessScriptHash>(m)); |
| 127 | RangeClasses<script::OpReturn> nulldataRangeCls(createAddressRangeClasses<script::OpReturn>(m)); |
| 128 | RangeClasses<script::Nonstandard> nonstandardRangeCls(createAddressRangeClasses<script::Nonstandard>(m)); |
| 129 | RangeClasses<script::WitnessUnknown> witnessUnknownRangeCls(createAddressRangeClasses<script::WitnessUnknown>(m)); |
| 130 | |
| 131 | RangeClasses<Cluster> clusterRangeCls(createRangeClasses<Cluster>(clusterMod)); |
| 132 | RangeClasses<TaggedCluster> taggedClusterRangeCls(createRangeClasses<TaggedCluster>(clusterMod)); |
| 133 | RangeClasses<TaggedAddress> taggedAddressRangeCls(createRangeClasses<TaggedAddress>(clusterMod)); |
nothing calls this directly
no test coverage detected