public void ConvertLogic()
        {
            tokenContract = new SolidityContract(token.ToStructureName());
            tokenContract.AddInheritance(ConverterConfig.OWNABLE_NAME);
            //constructor
            tokenContract.AddComponent(CreateConstructor());
            //mint
            tokenContract.AddComponent(CreateMintFunction());
            //transfer
            tokenContract.AddComponent(CreateTransferFunction());
            dataModelConverter.AddDependency(ConverterConfig.OWNABLE_IMPORT);
            if (token.IsFungible)
            {
                tokenContract.AddInheritance(ConverterConfig.FUNGIBLE_TOKEN_NAME);
                dataModelConverter.AddDependency(ConverterConfig.FUNGIBLE_TOKEN_IMPORT);
            }
            else
            {
                tokenContract.AddInheritance(ConverterConfig.NON_FUNGIBLE_TOKEN_NAME);
                dataModelConverter.AddDependency(ConverterConfig.NON_FUNGIBLE_TOKEN_IMPORT);
            }

            foreach (var property in token.Properties)
            {
                tokenContract.AddComponent(dataModelConverter.ConvertProperty(property));
            }
        }
Example #2
0
        public async Task <bool> Insert(SolidityContractAggregate contract)
        {
            if (contract == null)
            {
                throw new ArgumentNullException(nameof(contract));
            }

            var exists = await _currentDbContext.SolidityContracts.AnyAsync(w => w.Address == contract.Address).ConfigureAwait(false);

            if (exists)
            {
                return(false);
            }

            var record = new SolidityContract
            {
                Address = contract.Address,
                Code    = contract.Code,
                Abi     = contract.Abi
            };

            _currentDbContext.SolidityContracts.Add(record);
            await _currentDbContext.SaveChangesAsync().ConfigureAwait(false);

            return(true);
        }
Example #3
0
        public ContractConverter(Contract contract)
        {
            Contract             = contract;
            mainSolidityContract = new SolidityContract(contract.Id);

            DataModelConverter = new DataModelConverter(this);
            CreateProcessConverters();
        }
Example #4
0
        public void TestEmptyContract()
        {
            SolidityContract contract = new SolidityContract("foo");

            var actual   = contract.ToString();
            var expected = "contract foo { \n }";

            Assert.Equal(expected, actual);
        }
Example #5
0
        public ContractConverter(Contract contract)
        {
            Contract = contract;
            var contractName = $"contract{contract.Id.Replace("-", "")}";

            mainSolidityContract = new SolidityContract(contractName);

            DataModelConverter = new DataModelConverter(this);
            CreateProcessConverters();
        }
        public ContractConverter(Contract contract)
        {
            Contract = contract;
            var contractName = contract.Name == null ? contract.Id : contract.Name;

            mainSolidityContract = new SolidityContract(contractName);

            DataModelConverter = new DataModelConverter(this);
            CreateProcessConverters();
        }
Example #7
0
        public void TestSingleInheritance()
        {
            SolidityContract contract = new SolidityContract("foo");

            contract.AddInheritance("Bar1");

            var actual   = contract.ToString();
            var expected = "contract foo is Bar1{ \n }";

            Assert.Equal(expected, actual);
        }
Example #8
0
        public void TestContractWithFunction()
        {
            SolidityContract contract = new SolidityContract("foo");

            contract.AddComponent(new SolidityFunction("bar", SolidityVisibility.Public));

            var actual   = contract.ToString();
            var expected = "contract foo { \n" +
                           "\tfunction bar() public {\n" +
                           "\t}\n" +
                           "\n }";

            Assert.Equal(expected, actual);
        }
        public ProcessConverter(Contract contract)
        {
            process          = contract.Process;
            entities         = (List <Entity>)contract.Entities;
            solidityContract = new SolidityContract("GeneratedContract");

            AddDataModel();

            // ERC721 HouseToken address, only for Mortgage usecase, remove otherwise
            solidityContract.AddComponent(new SolidityStatement("IERC721 houseTokenAddress = IERC721(address(0x93b6784CE509d1cEA255aE8269af4Ee258943Bd0))"));

            //Current state declaration
            solidityContract.AddComponent(new SolidityStatement("mapping (string => bool) public " + ACTIVE_STATES_NAME));
            solidityContract.AddComponent(new SolidityStatement("mapping (string => address) public " + Helpers.ADDRESS_MAPPING_VAR_NAME));

            //Method for retrieving current state
            var getStateFunction = new SolidityFunction(IS_STATE_ACTIVE_FUNCTION_NAME, SolidityVisibility.Public, "bool");

            getStateFunction.AddToBody(new SolidityStatement("return " + ACTIVE_STATES_NAME + "[" + STATE_PARAMETER_NAME + "]"));
            getStateFunction.AddParameter(new SolidityParameter("string", STATE_PARAMETER_NAME));
            solidityContract.AddComponent(getStateFunction);

            IterateProcess();
        }