public static void SaveErrors(ContractWrapper cw, SqlConnection con) { var sql = @" Insert INTO ContractError(Fk_Contract,Fk_ContractErrorType,Text) VALUES(@fk_Contract,@fk_ContractErrorType,@text); " ; try { foreach (var err in cw.Errors) { using (var cmd = new SqlCommand(sql, con)) { cmd.Parameters.AddRange(new[] { new SqlParameter("@fk_Contract", cw.Id), new SqlParameter("@fk_ContractErrorType", (int)err.ErrorType), new SqlParameter("@text", (object)err.Text ?? DBNull.Value), }); cmd.ExecuteNonQuery(); }; } } catch { // int i = 5; } }
public void Invoke() { var contract = new ContractWrapper(NetworkType.Privnet); var hash = contract.WriteToBlockchain("test text".AsByteArray()); contract.ReadFromBlockchain(hash); Assert.AreEqual("test text", hash); }
public void ShouldCheckForNewupdate() { string lookupContractAddress = "0xa454963c7a6dcbdcd0d3fb281f4e67262fb71586"; string ncContractAddress = "0x5f51f49e25b2ba1acc779066a2614eb70a9093a0"; string rpc = Environment.GetEnvironmentVariable("TEST_RPC") ?? "http://localhost:8545"; string validatorAddress = "0xc3681dfe99730eb45154208cba7b0df7e705f305"; string fileToPersistBlockNum = Path.GetTempFileName(); ResetToSnapshot(rpc); // no new update should be seen ContractWrapper cw = new ContractWrapper(lookupContractAddress, rpc, validatorAddress, new MockLogger(), "test", _keyjson, fileToPersistBlockNum); bool hasUpdate = cw.HasNewUpdate().Result; hasUpdate.Should().Be(false); // Send an update // prepare RPC connection to play some tx string contractOwnerPk = "ae29ab491cf53d8b63f281cc5eecdbbac4a992b2a4bf483bacae66dfff0740f0"; Account account = new Account(contractOwnerPk); // create a web 3 instance Web3 web3 = new Web3(account, rpc); // hook up to the contract and event ContractHandler contractHandler = web3.Eth.GetContractHandler(ncContractAddress); // contract gets primed with by ganache start // const valAddr = "0xc3681dfe99730eb45154208cba7b0df7e705f305"; // first addr in ganache // contract.updateValidator(valAddr, '0x123456', 'parity/parity:v2.3.3', '0x123456', 'https://chainspec', true); TransactionReceipt confirmResponse = contractHandler.SendRequestAndWaitForReceiptAsync(new UpdateValidatorFunction { DockerSha = new byte[] { 0x0, 0x1, 0x2, 0x3, 0x23 }, DockerName = "parity/parity:v2.3.4", ChainspecSha = new byte[] { 0x0, 0x1, 0x2, 0x3, 0x23 }, ChainspecUrl = "https://example.com" + new Random().Next(), IsSigning = true, ValidatorAddress = validatorAddress }).Result; bool?hasErrors = confirmResponse.HasErrors(); if (hasErrors.HasValue && hasErrors.Value) { throw new ContractException("Unable to confirm update"); } // now an update should be seen bool hasUpdate2Nd = cw.HasNewUpdate().Result; hasUpdate2Nd.Should().Be(true); }
static void Main(string[] args) { var contract = new ContractWrapper(NetworkType.Privnet); var hash = contract.WriteToBlockchain("test text".AsByteArray()); var readValue = contract.ReadFromBlockchain(hash); if ("test text" != readValue) { throw new NotSupportedException(); } }
public void ShouldBeAbleToConfirmUpdate() { string contractAddress = "0xa454963c7a6dcbdcd0d3fb281f4e67262fb71586"; string rpc = Environment.GetEnvironmentVariable("TEST_RPC") ?? "http://localhost:8545"; string validatorAddress = "0xc3681dfe99730eb45154208cba7b0df7e705f305"; string fileToPersistBlockNum = Path.GetTempFileName(); ResetToSnapshot(rpc); IContractWrapper cw = new ContractWrapper(contractAddress, rpc, validatorAddress, new MockLogger(), "test", _keyjson, fileToPersistBlockNum); cw.ConfirmUpdate().Wait(); }
public void ShouldQueryContract() { string contractAddress = "0xa454963c7a6dcbdcd0d3fb281f4e67262fb71586"; string rpc = Environment.GetEnvironmentVariable("TEST_RPC") ?? "http://localhost:8545"; string validatorAddress = "0xc3681dfe99730eb45154208cba7b0df7e705f305"; string fileToPersistBlockNum = Path.GetTempFileName(); ResetToSnapshot(rpc); IContractWrapper cw = new ContractWrapper(contractAddress, rpc, validatorAddress, new MockLogger(), "test", _keyjson, fileToPersistBlockNum); NodeState state = cw.GetExpectedState().Result; Assert.Equal("parity/parity:v2.3.3", state.DockerImage); }
public void ShouldThrowOnWrongContractDuringConfirmUpdate() { string contractAddress = "0xa454963c7a6dcbdcd0d3fb281f4e67262fb71586"; string rpc = Environment.GetEnvironmentVariable("TEST_RPC") ?? "http://localhost:8545"; string validatorAddress = "0xc3681dfe99730eb45154208cba7b0df7e705f305"; string fileToPersistBlockNum = Path.GetTempFileName(); ResetToSnapshot(rpc); IContractWrapper cw = new ContractWrapper(contractAddress, rpc, validatorAddress, new MockLogger(), "test", _keyjson, fileToPersistBlockNum); Action confirmUpdateAction = () => { cw.ConfirmUpdate().Wait(); }; confirmUpdateAction.Should() .Throw <ContractException>() .WithMessage("Unable to confirm update"); }
public static void SaveContract(ContractWrapper cw, SqlConnection con) { var sql = @" Insert INTO Contract(Code,Data) VALUES(@code,@data); SELECT SCOPE_IDENTITY(); " ; using (var cmd = new SqlCommand(sql, con)) { cmd.Parameters.AddRange(new[] { new SqlParameter("@code", cw.Code), new SqlParameter("@data", cw.Body) }); var retId = cmd.ExecuteScalar(); var id = int.Parse(retId.ToString()); cw.Id = id; }; }
public static void SaveIndividuals(ContractWrapper cw, SqlConnection con) { var sql = @" Insert INTO ContractIndividual(Fk_Contract,CustomerCode,NationalId) VALUES(@fk_Contract,@customerCode,@NationalId); " ; foreach (var ind in cw.Individuals) { using (var cmd = new SqlCommand(sql, con)) { cmd.Parameters.AddRange(new[] { new SqlParameter("@fk_Contract", cw.Id), new SqlParameter("@customerCode", ind.CustomerCode), new SqlParameter("@NationalId", ind.NationalId), }); cmd.ExecuteNonQuery(); }; } }
static void Main(string[] args) { var serializer = new XmlSerializer(typeof(Contract)); var settings = new XmlReaderSettings(); settings.Schemas.Add("http://creditinfo.com/schemas/Sample/Data", "Sample.xsd"); settings.ValidationType = ValidationType.Schema; settings.IgnoreWhitespace = true; try { using (var con = new SqlConnection(Properties.Settings.Default.DefaultConnection)) { con.Open(); using (var reader = XmlReader.Create("Sample.xml", settings)) { while (reader.ReadToFollowing("Contract", "http://creditinfo.com/schemas/Sample/Data")) { try { var contract = serializer.Deserialize(reader.ReadSubtree()) as Contract; var cw = new ContractWrapper(contract); ContractSaver.Save(cw, con); } catch (Exception ex) { // log exception } } } // var i = ContractLoader.HasIndividual("AA0000011", con); } } catch (Exception ex) { // log exception } Console.ReadKey(); }
public CallRequest(ContractWrapper cw, string func) : base(cw, func) { req_ = new EthCallUnityRequest(RPCMgr.instance.Account.chain_url_); }
public BaseRequest(ContractWrapper c, string func) { cw_ = c; Function = Contract.GetFunction(func); }
public SendRequest(ContractWrapper cw, string func) : base(cw, func) { req_ = new TransactionSignedUnityRequest(RPCMgr.instance.Account.chain_url_, RPCMgr.instance.Account.PrivateKey, RPCMgr.instance.Account.address_); }
public static void Save(ContractWrapper cw, SqlConnection con) { SaveContract(cw, con); SaveIndividuals(cw, con); SaveErrors(cw, con); }