예제 #1
0
    def __init__(self,
                 seedarg,
                 max_mix_depth=2,
                 gaplimit=6,
                 extend_mixdepth=False,
                 storepassword=False):
        super(Wallet, self).__init__()
        self.max_mix_depth = max_mix_depth
        self.storepassword = storepassword
        # key is address, value is (mixdepth, forchange, index) if mixdepth =
        #  -1 it's an imported key and index refers to imported_privkeys
        self.addr_cache = {}
        self.unspent = {}
        self.spent_utxos = []
        self.imported_privkeys = {}
        self.seed = self.read_wallet_file_data(seedarg)
        if extend_mixdepth and len(self.index_cache) > max_mix_depth:
            self.max_mix_depth = len(self.index_cache)
        self.gaplimit = gaplimit
        master = btc.bip32_master_key(self.seed, (btc.MAINNET_PRIVATE if
            get_network() == 'mainnet' else btc.TESTNET_PRIVATE))
        m_0 = btc.bip32_ckd(master, 0)
        mixing_depth_keys = [btc.bip32_ckd(m_0, c)
                             for c in range(self.max_mix_depth)]
        self.keys = [(btc.bip32_ckd(m, 0), btc.bip32_ckd(m, 1))
                     for m in mixing_depth_keys]

        # self.index = [[0, 0]]*max_mix_depth
        self.index = []
        for i in range(self.max_mix_depth):
            self.index.append([0, 0])
예제 #2
0
 def get_key(self, mixing_depth, forchange, i):
     return btc.bip32_extract_key(btc.bip32_ckd(
             self.keys[mixing_depth][forchange], i))
예제 #3
0
 def get_key(self, mixing_depth, forchange, i):
     return btc.bip32_extract_key(
         btc.bip32_ckd(self.keys[mixing_depth][forchange], i))
예제 #4
0
 def get_mixing_depth_keys(self, master):
     """legacy path is m/0/n for n 0..N mixing depths
     """
     m_0 = btc.bip32_ckd(master, 0)
     return [btc.bip32_ckd(m_0, c) for c in range(self.max_mix_depth)]
예제 #5
0
 def get_mixing_depth_keys(self, master):
     pre_root = btc.bip32_ckd(master, 49 + 2**31)
     testnet_flag = 1 if get_network() == "testnet" else 0
     root = btc.bip32_ckd(pre_root, testnet_flag + 2**31)
     return [btc.bip32_ckd(root, c + 2**31) for c in range(self.max_mix_depth)]