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')
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_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 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)
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)
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])
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')
def setUp(self): self.obc = OBColorDefinition(1, {'txhash': 'genesis', 'outindex': 0}) self.genesis_tx = MockTX('genesis', [], []) self.tester = ColorDefinitionTester(self.obc)
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")
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")
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")