Esempio n. 1
0
    def issue_coins(self, moniker, pck, units, atoms_in_unit):
        from coloredcoinlib.colordef import OBColorDefinition
        from wallet_model import ColorSet

        if pck == 'obc':
            total = units * atoms_in_unit
            op_tx_spec = txcons.SimpleOperationalTxSpec(self.model, None)
            wam = self.model.get_address_manager()
            addr = wam.get_new_genesis_address()
            op_tx_spec.add_target(addr.get_address(), -1, total)
            genesis_ctxs = OBColorDefinition.compose_genesis_tx_spec(
                op_tx_spec)
            genesis_tx = self.model.transform_tx_spec(genesis_ctxs, 'signed')
            height = self.model.ccc.blockchain_state.bitcoind.getblockcount() \
                - 1
            genesis_tx_hash = self.publish_tx(genesis_tx)
            color_desc = ':'.join(['obc', genesis_tx_hash, '0', str(height)])
            adm = self.model.get_asset_definition_manager()
            assdef = adm.add_asset_definition({
                "monikers": [moniker],
                "color_set": [color_desc],
                "unit": atoms_in_unit
            })
            wam.update_genesis_address(assdef.get_color_set())
        else:
            raise Exception('color scheme not recognized')
Esempio n. 2
0
 def test_compose_genesis_tx_spec(self):
     txspec = MockOpTxSpec([])
     cv = SimpleColorValue(colordef=UNCOLORED_MARKER, value=1)
     self.assertRaises(InvalidTargetError,
                       OBColorDefinition.compose_genesis_tx_spec, txspec)
     target = ColorTarget('addr', cv)
     txspec = MockOpTxSpec([target])
     self.assertRaises(InvalidColorError,
                       OBColorDefinition.compose_genesis_tx_spec, txspec)
     cv = SimpleColorValue(colordef=GENESIS_OUTPUT_MARKER, value=1)
     target = ColorTarget('addr', cv)
     txspec = MockOpTxSpec([target])
     self.assertTrue(isinstance(
             OBColorDefinition.compose_genesis_tx_spec(txspec),
             ComposedTxSpec))
Esempio n. 3
0
 def test_compose_genesis_tx_spec(self):
     txspec = MockOpTxSpec([])
     cv = SimpleColorValue(colordef=UNCOLORED_MARKER, value=1)
     self.assertRaises(InvalidTargetError,
                       OBColorDefinition.compose_genesis_tx_spec, txspec)
     target = ColorTarget('addr', cv)
     txspec = MockOpTxSpec([target])
     self.assertRaises(InvalidColorError,
                       OBColorDefinition.compose_genesis_tx_spec, txspec)
     cv = SimpleColorValue(colordef=GENESIS_OUTPUT_MARKER, value=1)
     target = ColorTarget('addr', cv)
     txspec = MockOpTxSpec([target])
     self.assertTrue(
         isinstance(OBColorDefinition.compose_genesis_tx_spec(txspec),
                    ComposedTxSpec))
Esempio n. 4
0
 def setUp(self):
     self.colordef1 = POBColorDefinition(1, {
         'txhash': 'genesis',
         'outindex': 0
     })
     self.colordef2 = OBColorDefinition(2, {
         'txhash': 'genesis',
         'outindex': 0
     })
     self.cv1 = SimpleColorValue(colordef=self.colordef1,
                                 value=1,
                                 label='test')
     self.cv2 = SimpleColorValue(colordef=self.colordef1,
                                 value=2,
                                 label='test2')
     self.cv3 = SimpleColorValue(colordef=self.colordef2, value=1)
Esempio n. 5
0
 def test_compose_tx_spec(self):
     cv1 = SimpleColorValue(colordef=UNCOLORED_MARKER, value=10000)
     cv2 = SimpleColorValue(colordef=self.pobc, value=10000)
     targets = [ColorTarget('addr1', cv1), ColorTarget('addr1', cv2)]
     txspec = MockOpTxSpec(targets)
     self.assertTrue(
         isinstance(self.pobc.compose_tx_spec(txspec), ComposedTxSpec))
     cv1 = SimpleColorValue(colordef=UNCOLORED_MARKER, value=20000)
     cv2 = SimpleColorValue(colordef=self.pobc, value=20000)
     targets = [ColorTarget('addr1', cv1), ColorTarget('addr1', cv2)]
     txspec = MockOpTxSpec(targets)
     self.assertTrue(
         isinstance(self.pobc.compose_tx_spec(txspec), ComposedTxSpec))
     non = OBColorDefinition(2, {'txhash': 'something', 'outindex': 0})
     cv3 = SimpleColorValue(colordef=non, value=2)
     targets = [ColorTarget('addr1', cv3), ColorTarget('addr1', cv2)]
     txspec = MockOpTxSpec(targets)
     self.assertRaises(InvalidColorError, self.pobc.compose_tx_spec, txspec)
Esempio n. 6
0
 def setUp(self):
     self.colordef1 = EPOBCColorDefinition(1, {
         'txhash': 'genesis',
         'outindex': 0
     })
     self.colordef2 = OBColorDefinition(2, {
         'txhash': 'genesis',
         'outindex': 0
     })
     self.cv1 = SimpleColorValue(colordef=self.colordef1,
                                 value=1,
                                 label='test')
     self.cv2 = SimpleColorValue(colordef=self.colordef1,
                                 value=2,
                                 label='test2')
     self.cv3 = SimpleColorValue(colordef=self.colordef2, value=1)
     self.ct1 = ColorTarget('address1', self.cv1)
     self.ct2 = ColorTarget('address2', self.cv2)
     self.ct3 = ColorTarget('address3', self.cv3)
     self.txspec = MockOpTxSpec([self.ct1, self.ct2])
Esempio n. 7
0
    def issue_coins(self, moniker, pck, units, atoms_in_unit):
        from coloredcoinlib.colordef import OBColorDefinition
        from wallet_model import ColorSet

        if pck == 'obc':
            total = units * atoms_in_unit
            op_tx_spec = txcons.SimpleOperationalTxSpec(self.model, None)
            wam = self.model.get_address_manager()
            addr = wam.get_new_address(ColorSet(self.model, []))
            op_tx_spec.add_target(addr.get_address(), -1, total)
            genesis_ctxs = OBColorDefinition.compose_genesis_tx_spec(op_tx_spec)
            genesis_tx = self.model.transform_tx_spec(genesis_ctxs, 'signed')
            height = self.model.ccc.blockchain_state.bitcoind.getblockcount() - 1
            genesis_tx_hash = self.publish_tx(genesis_tx)
            color_desc = ':'.join(['obc', genesis_tx_hash, '0', str(height)])
            adm = self.model.get_asset_definition_manager()
            assdef = adm.add_asset_definition({"monikers": [moniker],
                                               "color_set": [color_desc]})
            addr.color_set = assdef.get_color_set()
            wam.update_config()                                      
        else:
            raise Exception('color scheme not recognized')
Esempio n. 8
0
 def setUp(self):
     self.obc = OBColorDefinition(1, {'txhash': 'genesis', 'outindex': 0})
     self.genesis_tx = MockTX('genesis', [], [])
     self.tester = ColorDefinitionTester(self.obc)
Esempio n. 9
0
class TestOBC(unittest.TestCase):

    def setUp(self):
        self.obc = OBColorDefinition(1, {'txhash': 'genesis', 'outindex': 0})
        self.genesis_tx = MockTX('genesis', [], [])
        self.tester = ColorDefinitionTester(self.obc)

    def test_run_kernel(self):
        test = self.tester.test

        # genesis
        self.assertEqual(test([1], [1], [1], "genesis"), [1])
        self.assertEqual(test([4], [1, 3], [1], "genesis"), [1, 3])

        # simple transfer
        self.assertEqual(test([1], [1], [1]), [1])
        # canonical split
        self.assertEqual(test([2, 3], [5], [2, 3]), [5])
        # canonical combine
        self.assertEqual(test([5], [2, 3], [5]), [2, 3])
        # screwed up
        self.assertEqual(test([1, 2, 3, 1], [1, 7, 1], [None, 2, 3, None]), [None, None, None])

    def test_affecting_inputs(self):
        self.assertEqual(self.obc.get_affecting_inputs(self.genesis_tx, set()),
                         set())
        tx = MockTX('other', [1,2,4,5], [2,1,7,2])
        self.assertEqual(self.obc.get_affecting_inputs(tx, set([0])),
                         set([tx.inputs[0], tx.inputs[1]]))
        self.assertEqual(self.obc.get_affecting_inputs(tx, set([0, 1])),
                         set([tx.inputs[0], tx.inputs[1]]))
        self.assertEqual(self.obc.get_affecting_inputs(tx, set([1])),
                         set([tx.inputs[1]]))
        self.assertEqual(self.obc.get_affecting_inputs(tx, set([1, 2])),
                         set([tx.inputs[1], tx.inputs[2], tx.inputs[3]]))
        self.assertEqual(self.obc.get_affecting_inputs(tx, set([2])),
                         set([tx.inputs[2], tx.inputs[3]]))
        self.assertEqual(self.obc.get_affecting_inputs(tx, set([3])),
                         set([tx.inputs[3]]))

    def test_compose_genesis_tx_spec(self):
        txspec = MockOpTxSpec([])
        cv = SimpleColorValue(colordef=UNCOLORED_MARKER, value=1)
        self.assertRaises(InvalidTargetError,
                          OBColorDefinition.compose_genesis_tx_spec, txspec)
        target = ColorTarget('addr', cv)
        txspec = MockOpTxSpec([target])
        self.assertRaises(InvalidColorError,
                          OBColorDefinition.compose_genesis_tx_spec, txspec)
        cv = SimpleColorValue(colordef=GENESIS_OUTPUT_MARKER, value=1)
        target = ColorTarget('addr', cv)
        txspec = MockOpTxSpec([target])
        self.assertTrue(isinstance(
                OBColorDefinition.compose_genesis_tx_spec(txspec),
                ComposedTxSpec))

    def test_compose_tx_spec(self):
        cv1 = SimpleColorValue(colordef=UNCOLORED_MARKER, value=1)
        cv2 = SimpleColorValue(colordef=self.obc, value=1)
        target1 = ColorTarget('addr1', cv1)
        target2 = ColorTarget('addr2', cv2)
        targets = [target1, target2]
        txspec = MockOpTxSpec(targets)
        self.assertTrue(isinstance(self.obc.compose_tx_spec(txspec),
                                   ComposedTxSpec))
        non = POBColorDefinition(2, {'txhash': 'something', 'outindex': 0})
        cv3 = SimpleColorValue(colordef=non, value=1)
        target3 = ColorTarget('addr3', cv3)
        targets = [cv3, cv2]
        txspec = MockOpTxSpec(targets)
        self.assertRaises(InvalidColorError, self.obc.compose_tx_spec, txspec)

    def test_from_color_desc(self):
        cd = OBColorDefinition.from_color_desc(1, "obc:doesnmatter:0:0")
        self.assertTrue(isinstance(cd, OBColorDefinition))
        self.assertRaises(InvalidColorError, OBColorDefinition.from_color_desc,
                          1, "blah:doesnmatter:0:0")
Esempio n. 10
0
 def test_from_color_desc(self):
     cd = OBColorDefinition.from_color_desc(1, "obc:doesnmatter:0:0")
     self.assertTrue(isinstance(cd, OBColorDefinition))
     self.assertRaises(InvalidColorError, OBColorDefinition.from_color_desc,
                       1, "blah:doesnmatter:0:0")
Esempio n. 11
0
 def setUp(self):
     self.obc = OBColorDefinition(1, {'txhash': 'genesis', 'outindex': 0})
     self.genesis_tx = MockTX('genesis', [], [])
     self.tester = ColorDefinitionTester(self.obc)
Esempio n. 12
0
class TestOBC(unittest.TestCase):
    def setUp(self):
        self.obc = OBColorDefinition(1, {'txhash': 'genesis', 'outindex': 0})
        self.genesis_tx = MockTX('genesis', [], [])
        self.tester = ColorDefinitionTester(self.obc)

    def test_run_kernel(self):
        test = self.tester.test

        # genesis
        self.assertEqual(test([1], [1], [1], "genesis"), [1])
        self.assertEqual(test([4], [1, 3], [1], "genesis"), [1, 3])

        # simple transfer
        self.assertEqual(test([1], [1], [1]), [1])
        # canonical split
        self.assertEqual(test([2, 3], [5], [2, 3]), [5])
        # canonical combine
        self.assertEqual(test([5], [2, 3], [5]), [2, 3])
        # screwed up
        self.assertEqual(test([1, 2, 3, 1], [1, 7, 1], [None, 2, 3, None]),
                         [None, None, None])

    def test_affecting_inputs(self):
        self.assertEqual(self.obc.get_affecting_inputs(self.genesis_tx, set()),
                         set())
        tx = MockTX('other', [1, 2, 4, 5], [2, 1, 7, 2])
        self.assertEqual(self.obc.get_affecting_inputs(tx, set([0])),
                         set([tx.inputs[0], tx.inputs[1]]))
        self.assertEqual(self.obc.get_affecting_inputs(tx, set([0, 1])),
                         set([tx.inputs[0], tx.inputs[1]]))
        self.assertEqual(self.obc.get_affecting_inputs(tx, set([1])),
                         set([tx.inputs[1]]))
        self.assertEqual(self.obc.get_affecting_inputs(tx, set([1, 2])),
                         set([tx.inputs[1], tx.inputs[2], tx.inputs[3]]))
        self.assertEqual(self.obc.get_affecting_inputs(tx, set([2])),
                         set([tx.inputs[2], tx.inputs[3]]))
        self.assertEqual(self.obc.get_affecting_inputs(tx, set([3])),
                         set([tx.inputs[3]]))

    def test_compose_genesis_tx_spec(self):
        txspec = MockOpTxSpec([])
        cv = SimpleColorValue(colordef=UNCOLORED_MARKER, value=1)
        self.assertRaises(InvalidTargetError,
                          OBColorDefinition.compose_genesis_tx_spec, txspec)
        target = ColorTarget('addr', cv)
        txspec = MockOpTxSpec([target])
        self.assertRaises(InvalidColorError,
                          OBColorDefinition.compose_genesis_tx_spec, txspec)
        cv = SimpleColorValue(colordef=GENESIS_OUTPUT_MARKER, value=1)
        target = ColorTarget('addr', cv)
        txspec = MockOpTxSpec([target])
        self.assertTrue(
            isinstance(OBColorDefinition.compose_genesis_tx_spec(txspec),
                       ComposedTxSpec))

    def test_compose_tx_spec(self):
        cv1 = SimpleColorValue(colordef=UNCOLORED_MARKER, value=1)
        cv2 = SimpleColorValue(colordef=self.obc, value=1)
        target1 = ColorTarget('addr1', cv1)
        target2 = ColorTarget('addr2', cv2)
        targets = [target1, target2]
        txspec = MockOpTxSpec(targets)
        self.assertTrue(
            isinstance(self.obc.compose_tx_spec(txspec), ComposedTxSpec))
        non = POBColorDefinition(2, {'txhash': 'something', 'outindex': 0})
        cv3 = SimpleColorValue(colordef=non, value=1)
        target3 = ColorTarget('addr3', cv3)
        targets = [cv3, cv2]
        txspec = MockOpTxSpec(targets)
        self.assertRaises(InvalidColorError, self.obc.compose_tx_spec, txspec)

    def test_from_color_desc(self):
        cd = OBColorDefinition.from_color_desc(1, "obc:doesnmatter:0:0")
        self.assertTrue(isinstance(cd, OBColorDefinition))
        self.assertRaises(InvalidColorError, OBColorDefinition.from_color_desc,
                          1, "blah:doesnmatter:0:0")
Esempio n. 13
0
 def test_from_color_desc(self):
     cd = OBColorDefinition.from_color_desc(1, "obc:doesnmatter:0:0")
     self.assertTrue(isinstance(cd, OBColorDefinition))
     self.assertRaises(InvalidColorError, OBColorDefinition.from_color_desc,
                       1, "blah:doesnmatter:0:0")