public static string GenerateStringAddress(BtcAddress address) { var redeemScript = GetRedeemScript(address); String addrString = redeemScript.GetScriptAddress(address.Teammate.Team.Network).ToString(); return(addrString); }
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); }
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); }
public void Update(BtcAddress address) { Update <BtcAddress>(address); }
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); } } } }); }