def test_version_override(self):
     coin_spend = CoinSpend(
         COIN,
         OFFER_MOD,
         SOLUTION,
     )
     spend_bundle = SpendBundle([coin_spend], G2Element())
     compressed = compress_object_with_puzzles(bytes(spend_bundle),
                                               LATEST_VERSION)
     compressed_earlier = compress_object_with_puzzles(
         bytes(spend_bundle), 1)
     assert len(bytes(spend_bundle)) > len(bytes(compressed))
     assert spend_bundle == SpendBundle.from_bytes(
         decompress_object_with_puzzles(compressed))
     assert spend_bundle == SpendBundle.from_bytes(
         decompress_object_with_puzzles(compressed_earlier))
     assert len(bytes(compressed_earlier)) > len(bytes(compressed))
Example #2
0
 def compress(self, version=None) -> bytes:
     as_spend_bundle = self.to_spend_bundle()
     if version is None:
         mods: List[bytes] = [
             bytes(s.puzzle_reveal.to_program().uncurry()[0])
             for s in as_spend_bundle.coin_spends
         ]
         version = max(lowest_best_version(mods),
                       2)  # 2 is the version where OFFER_MOD lives
     return compress_object_with_puzzles(bytes(as_spend_bundle), version)
 def test_offer_puzzle(self):
     coin_spend = CoinSpend(
         COIN,
         OFFER_MOD,
         SOLUTION,
     )
     compressed = compress_object_with_puzzles(bytes(coin_spend),
                                               LATEST_VERSION)
     assert len(bytes(coin_spend)) > len(compressed)
     assert coin_spend == CoinSpend.from_bytes(
         decompress_object_with_puzzles(compressed))
     self.compression_factors["offer_puzzle"] = len(
         bytes(compressed)) / len(bytes(coin_spend))
 def test_standard_puzzle(self):
     coin_spend = CoinSpend(
         COIN,
         puzzle_for_pk(G1Element()),
         SOLUTION,
     )
     compressed = compress_object_with_puzzles(bytes(coin_spend),
                                               LATEST_VERSION)
     assert len(bytes(coin_spend)) > len(compressed)
     assert coin_spend == CoinSpend.from_bytes(
         decompress_object_with_puzzles(compressed))
     self.compression_factors["standard_puzzle"] = len(
         bytes(compressed)) / len(bytes(coin_spend))
 def test_unknown_wrapper(self):
     unknown = Program.to([2, 2, []])  # (a 2 ())
     coin_spend = CoinSpend(
         COIN,
         unknown.curry(puzzle_for_pk(G1Element())),
         SOLUTION,
     )
     compressed = compress_object_with_puzzles(bytes(coin_spend),
                                               LATEST_VERSION)
     assert len(bytes(coin_spend)) > len(compressed)
     assert coin_spend == CoinSpend.from_bytes(
         decompress_object_with_puzzles(compressed))
     self.compression_factors["unknown_and_standard"] = len(
         bytes(compressed)) / len(bytes(coin_spend))
 def test_nesting_puzzles(self):
     coin_spend = CoinSpend(
         COIN,
         construct_cat_puzzle(CAT_MOD,
                              Program.to([]).get_tree_hash(),
                              puzzle_for_pk(G1Element())),
         SOLUTION,
     )
     compressed = compress_object_with_puzzles(bytes(coin_spend),
                                               LATEST_VERSION)
     assert len(bytes(coin_spend)) > len(compressed)
     assert coin_spend == CoinSpend.from_bytes(
         decompress_object_with_puzzles(compressed))
     self.compression_factors["cat_w_standard_puzzle"] = len(
         bytes(compressed)) / len(bytes(coin_spend))