예제 #1
0
        void RunAcceptorTest(string acceptorFolder, Network network)
        {
            var myKey = new Key(Encoders.Hex.DecodeData("659ed592d16a47f8b3eea2e3d918624963e20da29a83e097c0ffbf0ef1b3e8cc"));
            var data  = AcceptorTest.Open(acceptorFolder, network);

            if (data.FundingOverride != null)
            {
                testOutputHelper.WriteLine("Using funding override");
                data.Builder.FundingOverride = data.FundingOverride;
            }

            data.Builder.Accept(data.Offer, data.FundingTemplate.Outputs[0].Value);
            var accepted = data.Builder.FundAccept(myKey, data.FundingTemplate);

            testOutputHelper.WriteLine("---Accept message---");
            testOutputHelper.WriteLine(JsonConvert.SerializeObject(accepted, TestnetSettings));
            testOutputHelper.WriteLine("--------------------");
            if (data.FundingOverride == null)
            {
                testOutputHelper.WriteLine("----Expected funding ----");
                testOutputHelper.WriteLine(data.Builder.GetFundingTransaction().ToHex());
                testOutputHelper.WriteLine("--------------------");
            }

            data.Builder.Finalize1(data.Sign);
            var unsigned = data.Builder.GetFundingPSBT();

            testOutputHelper.WriteLine("---Partially signed funding PSBT---");
            testOutputHelper.WriteLine(unsigned.ToBase64());
            testOutputHelper.WriteLine("--------------------");

            if (data.OracleAttestation != null)
            {
                var outcomeSigned = data.Builder.Execute(myKey, data.OracleAttestation);

                testOutputHelper.WriteLine("---Signed CET---");
                testOutputHelper.WriteLine(outcomeSigned.CET.ToHex());
                testOutputHelper.WriteLine("--------------------");
            }
        }
예제 #2
0
            public static AcceptorTest Open(string folder, Network network)
            {
                var          settings        = network == Network.RegTest ? Settings : TestnetSettings;
                AcceptorTest t               = new AcceptorTest();
                var          fundingOverride = Path.Combine(folder, "FundingOverride.hex");

                if (File.Exists(fundingOverride))
                {
                    t.FundingOverride = Transaction.Parse(File.ReadAllText(fundingOverride), network);
                }
                t.Offer = Parse <Offer>(Path.Combine(folder, "Offer.json"), settings);
                t.Sign  = Parse <Sign>(Path.Combine(folder, "Sign.json"), settings);

                var attestation = Path.Combine(folder, "OracleAttestation.hex");

                if (File.Exists(attestation))
                {
                    t.OracleAttestation = new Key(Encoders.Hex.DecodeData(File.ReadAllText(attestation)));
                }
                t.Builder         = new DLCTransactionBuilder(false, null, null, null, network);
                t.FundingTemplate = PSBT.Parse(File.ReadAllText(Path.Combine(folder, "FundingTemplate.psbt")), network);
                return(t);
            }