Ejemplo n.º 1
0
    async def resolve(self) -> PlotKeys:
        if self.resolved_keys is not None:
            return self.resolved_keys

        keychain_proxy: Optional[KeychainProxy] = None
        if self.connect_to_daemon:
            keychain_proxy = await connect_to_keychain_and_validate(self.root_path, self.log)
        else:
            keychain_proxy = wrap_local_keychain(Keychain(), log=self.log)

        farmer_public_key: G1Element
        if self.farmer_public_key is not None:
            farmer_public_key = G1Element.from_bytes(bytes.fromhex(self.farmer_public_key))
        else:
            farmer_public_key = await self.get_farmer_public_key(keychain_proxy)

        pool_public_key: Optional[G1Element] = None
        if self.pool_public_key is not None:
            if self.pool_contract_address is not None:
                raise RuntimeError("Choose one of pool_contract_address and pool_public_key")
            pool_public_key = G1Element.from_bytes(bytes.fromhex(self.pool_public_key))
        else:
            if self.pool_contract_address is None:
                # If nothing is set, farms to the provided key (or the first key)
                pool_public_key = await self.get_pool_public_key(keychain_proxy)

        self.resolved_keys = PlotKeys(farmer_public_key, pool_public_key, self.pool_contract_address)
        return self.resolved_keys
Ejemplo n.º 2
0
 async def ensure_keychain_proxy(self) -> KeychainProxy:
     if not self.keychain_proxy:
         if self.local_keychain:
             self.keychain_proxy = wrap_local_keychain(self.local_keychain, log=self.log)
         else:
             self.keychain_proxy = await connect_to_keychain_and_validate(self._root_path, self.log)
             if not self.keychain_proxy:
                 raise KeychainProxyConnectionFailure("Failed to connect to keychain service")
     return self.keychain_proxy