
DROP DATABASE `federation`;

CREATE SCHEMA IF NOT EXISTS `federation`;

USE `federation`;


# Dump of table chains
# ------------------------------------------------------------

CREATE TABLE `chains` (
  `id` tinyint(1) NOT NULL AUTO_INCREMENT,
  `name` varchar(64) NOT NULL,
  `block_height` int(11) DEFAULT '0',
  `block_hash` char(64) NOT NULL,
  `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `name` (`name`),
  UNIQUE KEY `block_hash` (`id`,`block_hash`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


------------------------------------ bytom consensus --------------------------------------
-- chain name should be the same as BytomChainName in toolbar/federation/common/const.go --
-------------------------------------------------------------------------------------------
-- bytom mainnet consensus start--
INSERT INTO `chains`
(`id`, `name`, `block_height`, `block_hash`, `created_at`, `updated_at`)
VALUES
(1,'btm',0,'a75483474799ea1aa6bb910a1a5025b4372bf20bef20f246a2c2dc5e12e8a053','2018-09-13 05:10:43','2018-11-27 09:42:06');
-- bytom mainnet consensus end--

-- bytom testnet&solonet consensus start--
-- INSERT INTO `chains`
-- (`id`, `name`, `block_height`, `block_hash`, `created_at`, `updated_at`)
-- VALUES
-- (1,'btm',0,'ce4fe9431cd0225b3a811f8f8ec922f2b07a921bb12a8dddae9a85540072c770','2018-09-13 05:10:43','2018-11-27 09:42:06');
-- bytom testnet&solonet consensus end--
------------------------------------ bytom consensus --------------------------------------
------------------------------------ vapor consensus --------------------------------------
-- chain name should be the same as VaporChainName in toolbar/federation/common/const.go --
-------------------------------------------------------------------------------------------
-- vapor mainnet consensus start--
INSERT INTO `chains`
(`id`, `name`, `block_height`, `block_hash`, `created_at`, `updated_at`)
VALUES
(1,'vapor',0,'89fc0e98c5cf8a05f3eadb916542ff8a127d810d375c4023ff8fde07cc7eb982','2018-09-13 05:10:43','2018-11-27 09:42:06');
-- vapor mainnet consensus end--
------------------------------------ vapor consensus --------------------------------------



# Dump of table cross_transactions
# ------------------------------------------------------------

CREATE TABLE `cross_transactions` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `chain_id` tinyint(1) NOT NULL,
  `source_block_height` int(11) NOT NULL,
  `source_block_timestamp` int(11) NOT NULL,
  `source_block_hash` char(64) NOT NULL,
  `source_tx_index` int(11) NOT NULL,
  `source_mux_id` char(64) NOT NULL,
  `source_tx_hash` char(64) NOT NULL,
  `source_raw_transaction` mediumtext NOT NULL,
  `dest_block_height` int(11) DEFAULT NULL,
  `dest_block_timestamp` int(11) DEFAULT NULL,
  `dest_block_hash` char(64) DEFAULT NULL,
  `dest_tx_index` int(11) DEFAULT NULL,
  `dest_tx_hash` char(64) DEFAULT NULL,
  `status` tinyint(1) DEFAULT '0',
  `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `source_mux_id` (`chain_id`,`source_mux_id`),
  UNIQUE KEY `source_tx_hash` (`chain_id`,`source_tx_hash`),
  UNIQUE KEY `source_blockhash_txidx` (`chain_id`,`source_block_hash`,`source_tx_index`),
  UNIQUE KEY `source_blockheight_txidx` (`chain_id`,`source_block_height`,`source_tx_index`),
  UNIQUE KEY `dest_tx_hash` (`chain_id`,`dest_tx_hash`),
  UNIQUE KEY `dest_blockhash_txidx` (`chain_id`,`dest_block_hash`,`dest_tx_index`),
  UNIQUE KEY `dest_blockheight_txidx` (`chain_id`,`dest_block_height`,`dest_tx_index`),
  CONSTRAINT `cross_transactions_ibfk_1` FOREIGN KEY (`chain_id`) REFERENCES `chains` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;



# Dump of table cross_transaction_reqs
# ------------------------------------------------------------
CREATE TABLE `cross_transaction_reqs` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `cross_transaction_id` int(11) NOT NULL,
  `source_pos` int(11) NOT NULL,
  `asset_id` int(11) NOT NULL,
  `asset_amount` bigint(20) DEFAULT '0',
  `script` varchar(128) NOT NULL,
  `from_address` varchar(128) NOT NULL DEFAULT '',
  `to_address` varchar(128) NOT NULL DEFAULT '',
  `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `req_id` (`cross_transaction_id`,`source_pos`),
  CONSTRAINT `cross_transaction_reqs_ibfk_1` FOREIGN KEY (`cross_transaction_id`) REFERENCES `cross_transactions` (`id`),
  CONSTRAINT `cross_transaction_reqs_ibfk_2` FOREIGN KEY (`asset_id`) REFERENCES `assets` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;



# Dump of table assets
# ------------------------------------------------------------

CREATE TABLE `assets` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `asset_id` varchar(64) NOT NULL,
  `issuance_program` varchar(128) NOT NULL,
  `vm_version` int(11) NOT NULL DEFAULT '1',
  `definition` text,
  `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `asset_id` (`asset_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


INSERT INTO `assets` (`id`, `asset_id`, `issuance_program`, `vm_version`, `definition`, `created_at`, `updated_at`)
VALUES
  (1,'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff','',1,
  '{
    "decimals": 8,
    "description": "Bytom Official Issue",
    "name": "BTM",
    "symbol": "BTM"
  }',
  '2018-09-13 05:10:43','2018-11-27 09:43:35');

