Exemple #1
0
        public static string GenerateStringAddress(BtcAddress address)
        {
            var    redeemScript = GetRedeemScript(address);
            String addrString   = redeemScript.GetScriptAddress(address.Teammate.Team.Network).ToString();

            return(addrString);
        }
Exemple #2
0
        public static Script GetPubKeyScript(BtcAddress address)
        {
            var    redeemScript = GetRedeemScript(address);
            Script pubKeyScript = new Script(
                OpcodeType.OP_HASH160,
                Op.GetPushOp(redeemScript.GetScriptAddress(address.Teammate.Team.Network).ToBytes()),
                OpcodeType.OP_EQUAL
                );

            return(pubKeyScript);
        }
Exemple #3
0
        public static Script GetRedeemScript(BtcAddress address)
        {
            var ownerPublicKey      = new PubKey(address.Teammate.PublicKey);
            var cosignersPublicKeys = address.Cosigners.OrderBy(x => x.KeyOrder).Select(x => new PubKey(x.Teammate.PublicKey)).ToList();
            var n = cosignersPublicKeys.Count;

            Op[] ops = new Op[7 + n];

            ops[0] = Op.GetPushOp(ownerPublicKey.ToBytes());
            ops[1] = OpcodeType.OP_CHECKSIGVERIFY;
            if (n > 6)
            {
                ops[2] = OpcodeType.OP_3;
            }
            else if (n > 3)
            {
                ops[2] = OpcodeType.OP_2;
            }
            else if (n > 0)
            {
                ops[2] = OpcodeType.OP_1;
            }
            else
            {
                ops[2] = OpcodeType.OP_0;
            }

            for (int i = 0; i < n; i++)
            {
                var pubKey = cosignersPublicKeys[i];
                ops[3 + i] = Op.GetPushOp(pubKey.ToBytes());
            }
            ops[3 + n] = (OpcodeType)(80 + n);
            ops[4 + n] = OpcodeType.OP_CHECKMULTISIG;
            ops[5 + n] = Op.GetPushOp(new BigInteger(address.Teammate.Team.Id));
            ops[6 + n] = OpcodeType.OP_DROP;

            Script redeemScript = new Script(ops);

            return(redeemScript);
        }
Exemple #4
0
 public void Update(BtcAddress address)
 {
     Update <BtcAddress>(address);
 }
Exemple #5
0
 public BtcAddress Add(BtcAddress address)
 {
     return(Add <BtcAddress>(address));
 }
        public DisbandForm(int myTeammateId)
        {
            _accountService = new AccountService();
            _me             = _accountService.GetTeammate(myTeammateId);
            _curAddress     = _me.BtcAddressCurrent;
            _prevAddress    = _me.BtcAddressPrevious;
            _user           = _accountService.GetUser();

            InitializeComponent();

            _textBoxAuxAddress.Text = _accountService.GetAuxWallet(_me.Team.Network).ToString();
            _textBoxAddressTo.Text  = _me.CurDisbanding.WithdrawAddr;

            UpdateStatuses();
            UpdateWithdrawalControls();
            UpdateCosignerOfControls();

            Task.Factory.StartNew(() =>
            {
                if (!_accountService.Closed) // todo: change it to separate contexts
                {
                    var blockchainService = new BlockchainService(_accountService);
                    blockchainService.TryFetchAuxWalletUtxos(true, _me.Team.Network);
                    if (!_closing)
                    {
                        try
                        {
                            this.Invoke((MethodInvoker) delegate()
                            {
                                UpdateStatuses();
                            });
                        }
                        catch (Exception ex) {
                            Logger.WriteException(ex);
                        }
                    }
                }
            });

            Task.Factory.StartNew(() =>
            {
                if (!_accountService.Closed) // todo: change it to separate contexts
                {
                    var blockchainService = new BlockchainService(_accountService);
                    if (_curAddress != null)
                    {
                        _amountSatoshisCurent = blockchainService.FetchBalance(_curAddress);
                    }
                    if (_prevAddress != null)
                    {
                        _amountSatoshisPrevious = blockchainService.FetchBalance(_prevAddress);
                    }
                    if (!_closing)
                    {
                        try
                        {
                            this.Invoke((MethodInvoker) delegate()
                            {
                                UpdateWithdrawalControls();
                            });
                        }
                        catch (Exception ex) {
                            Logger.WriteException(ex);
                        }
                    }
                }
            });
        }