Beispiel #1
0
 private void ValidateId(string id, MarketContract contract)
 {
     if (contract?.Id != id)
     {
         throw new ArgumentException("Id must match with contract id");
     }
 }
Beispiel #2
0
        public SmartContract FindContract(string contractName)
        {
            Throw.IfNullOrEmpty(contractName, nameof(contractName));

            if (_contractCache.ContainsKey(contractName))
            {
                return(_contractCache[contractName]);
            }

            SmartContract contract;

            switch (contractName)
            {
            case "nexus": contract = new NexusContract(); break;

            case "consensus":  contract = new ConsensusContract(); break;

            case "governance":  contract = new GovernanceContract(); break;

            case "account":  contract = new AccountContract(); break;

            case "friends": contract = new FriendContract(); break;

            case "exchange": contract = new ExchangeContract(); break;

            case "market":    contract = new MarketContract(); break;

            case "energy":   contract = new EnergyContract(); break;

            case "token": contract = new TokenContract(); break;

            case "swap": contract = new SwapContract(); break;

            case "gas":  contract = new GasContract(); break;

            case "relay": contract = new RelayContract(); break;

            case "storage": contract = new StorageContract(); break;

            case "vault": contract = new VaultContract(); break;

            case "bank": contract = new BankContract(); break;

            case "apps": contract = new AppsContract(); break;

            case "dex": contract = new ExchangeContract(); break;

            case "nacho": contract = new NachoContract(); break;

            case "casino": contract = new CasinoContract(); break;

            default:
                throw new Exception("Unknown contract: " + contractName);
            }

            _contractCache[contractName] = contract;
            return(contract);
        }
Beispiel #3
0
        public async Task <MarketContract> Update(string marketId, [FromBody] MarketContract market)
        {
            Validate(market);
            ValidateId(marketId, market);

            await _marketRepository.UpdateAsync(_convertService.Convert <MarketContract, Market>(market));

            await _eventSender.SendSettingsChangedEvent($"{Request.Path}", SettingsChangedSourceType.Market,
                                                        marketId);

            return(market);
        }
Beispiel #4
0
        private void Validate(MarketContract newValue)
        {
            if (newValue == null)
            {
                throw new ArgumentNullException("market", "Model is incorrect");
            }

            if (string.IsNullOrWhiteSpace(newValue.Id))
            {
                throw new ArgumentNullException(nameof(newValue.Id), "market Id must be set");
            }
        }
Beispiel #5
0
        public async Task <MarketContract> Insert([FromBody] MarketContract market)
        {
            Validate(market);

            if (!await _marketRepository.TryInsertAsync(_convertService.Convert <MarketContract, Market>(market)))
            {
                throw new ArgumentException($"Market with id {market.Id} already exists", nameof(market.Id));
            }

            await _eventSender.SendSettingsChangedEvent($"{Request.Path}", SettingsChangedSourceType.Market,
                                                        market.Id);

            return(market);
        }
 public static void SaveMarketContract(string userID, string contract, string tabID)
 {
     using (var clientCtx = new ClientDbContext())
     {
         var marketcontract = clientCtx.MarketContract.FirstOrDefault(t => t.AccountID == userID && t.Contract == contract && t.TabID == tabID);
         if (marketcontract == null)
         {
             marketcontract = new MarketContract
             {
                 AccountID = userID,
                 Contract  = contract,
                 TabID     = tabID,
             };
             clientCtx.MarketContract.Add(marketcontract);
             clientCtx.SaveChanges();
         }
     }
 }
Beispiel #7
0
        private static async Task CheckMarketsApiWorking(IHttpClientGenerator clientGenerator)
        {
            var market = new MarketContract
            {
                Id   = "m1",
                Name = "1",
            };

            var marketApiClient = clientGenerator.Generate <IMarketsApi>();
            await marketApiClient.List().Dump();

            await marketApiClient.Insert(market).Dump();

            await marketApiClient.Get("m1").Dump();

            market.Name = "1111";
            await marketApiClient.Update("m1", market).Dump();

            await marketApiClient.Delete("m1");
        }
Beispiel #8
0
        internal Chain CreateChain(Address owner, string name, Chain parentChain, Block parentBlock)
        {
            if (name != RootChainName)
            {
                if (parentChain == null || parentBlock == null)
                {
                    return(null);
                }
            }

            if (!Chain.ValidateName(name))
            {
                return(null);
            }

            // check if already exists something with that name
            var temp = FindChainByName(name);

            if (temp != null)
            {
                return(null);
            }

            SmartContract contract;

            switch (name)
            {
            case "privacy": contract = new PrivacyContract(); break;

            case "storage": contract = new StorageContract(); break;

            case "vault": contract = new VaultContract(); break;

            case "bank": contract = new BankContract(); break;

            case "apps": contract = new AppsContract(); break;

            case "dex": contract = new ExchangeContract(); break;

            case "market": contract = new MarketContract(); break;

            case "energy": contract = new EnergyContract(); break;

            case "nacho": contract = new NachoContract(); break;

            case "casino": contract = new CasinoContract(); break;

            default:
            {
                var sb = new ScriptBuilder();
                contract = new CustomContract(sb.ToScript(), null);         // TODO
                break;
            }
            }

            var tokenContract = new TokenContract();
            var gasContract   = new GasContract();

            var chain = new Chain(this, name, _logger);

            chain.Initialize(new[] { tokenContract, gasContract, contract });

            // add to persisent list of chains
            var chainList = this.Chains.ToList();

            chainList.Add(name);
            this.Chains = chainList;

            // add address and name mapping
            this._vars.Set(ChainAddressMapKey + chain.Address.Text, Encoding.UTF8.GetBytes(chain.Name));
            this._vars.Set(ChainNameMapKey + chain.Name, chain.Address.PublicKey);
            if (parentChain != null)
            {
                this._vars.Set(ChainParentNameKey + chain.Name, Encoding.UTF8.GetBytes(parentChain.Name));
                this._vars.Set(ChainParentBlockKey + chain.Name, parentBlock.Hash.ToByteArray());
            }

            _chainCache[chain.Name] = chain;

            return(chain);
        }
Beispiel #9
0
        internal Chain CreateChain(Address owner, string name, Chain parentChain, Block parentBlock)
        {
            if (parentChain == null || parentBlock == null)
            {
                return(null);
            }

            if (owner != GenesisAddress)
            {
                if (parentChain.Level < 2)
                {
                    return(null);
                }
            }

            if (!Chain.ValidateName(name))
            {
                return(null);
            }

            // check if already exists something with that name
            var temp = FindChainByName(name);

            if (temp != null)
            {
                return(null);
            }

            SmartContract contract;

            switch (name)
            {
            case "privacy": contract = new PrivacyContract(); break;

            case "storage": contract = new StorageContract(); break;

            case "vault": contract = new VaultContract(); break;

            case "bank": contract = new BankContract(); break;

            case "apps": contract = new AppsContract(); break;

            case "dex": contract = new ExchangeContract(); break;

            case "market": contract = new MarketContract(); break;

            case "energy": contract = new EnergyContract(); break;

            default:
            {
                var sb = new ScriptBuilder();
                contract = new CustomContract(sb.ToScript(), null);         // TODO
                break;
            }
            }

            var tokenContract = new TokenContract();
            var gasContract   = new GasContract();

            var chain = new Chain(this, name, new[] { tokenContract, gasContract, contract }, _logger, parentChain, parentBlock);

            lock (_chains)
            {
                _chains[name] = chain;
            }

            return(chain);
        }