細心的用戶可能發現Bycoin錢包在高級設置下面增加了幾個新的功能——錢包余額刷新工具,UTXO合并工具,如下圖:
這些小工具可以一鍵解決用戶使用過程中的一些小問題,那么這些小工具有什么作用呢?
錢包余額刷新工具
錢包余額刷新工具可以強制節點再次更新用戶賬戶的余額信息,解決合約轉賬或者余額未及時同步的問題。
外部賬戶和合約賬戶
我們知道以太坊中有兩類賬戶——外部賬戶和合約賬戶
外部賬戶:該類賬戶被公鑰-私鑰對控制,外部賬戶的地址是由公鑰決定的
合約賬戶:該類賬戶被存儲在賬戶中的代碼控制,合約賬戶的地址是在創建合約時確定的
兩種賬戶都可以實現對以太幣的管理,包括持有以太幣、查詢余額、發送交易等。
交易和內部交易
一般用戶轉賬的時候,都是使用外部賬戶對代幣合約發起調用,調用轉賬的方法,最終發起轉賬的請求到以太坊節點。
那么什么是內部交易,內部交易就是合約之間的調用,通過合約狀態的改變從而達成轉賬的目的
直播 | 小鳳仙 > 交易所如何助力礦業發展?:金色財經 · 直播主辦的《 幣圈 “后浪” 仙女直播周》第4期今晚20:00準時開始,本期“后浪”仙女Aex CMO 小鳳仙將在直播間聊聊 “交易所如何助力礦業發展”,感興趣的朋友掃碼移步收聽![2020/6/9]
針對第一種普通轉賬,Bycoin可以很輕易檢測到用戶余額的改變,而內部交易較難檢測到其內部的行為。所以通過錢包余額刷新工具來更新內部交易產生的交易而導致的余額變化。
錢包余額刷新工具做了什么?
錢包余額刷新工具會請求以太坊的節點,來重新查詢用戶的地址,獲取內部交易產生的余額變動,并將查詢結果記錄到數據庫中,從而將用戶余額正確更新.
func(s*Service)SyncBalance(c*gin.Context)error{address,err:=formatETHAddress(c.Query("address"))iferr!=nil{returncommonTypes.ErrAddressFormat}iferr:=s.DB.Slave().Model(orm.Address{}).Where("address=?",address).First(&orm.Address{}).Error;err!=nil{returncommonTypes.ErrNotFoundAddress}ormAssets:=make(orm.Asset,0)iferr:=s.DB.Slave().Model(orm.Asset{}).Find(&ormAssets).Error;err!=nil{returncommonTypes.ErrAssetID}blockHeight,err:=s.node.GetBlockCount()iferr!=nil{returnerr}for_,asset:=rangeormAssets{ifasset.Asset==ETH{iferr:=ethereum.UpdateBalance(s.DB.Master(),address,s.node,asset.Asset,asset.ID,int64(blockHeight));err!=nil{returnerr}}else{iferr:=ethereum.UpdateBalance(s.DB.Master(),address,s.node,asset.ContractAddress,asset.ID,int64(blockHeight));err!=nil{returnerr}}}returnnil}funcUpdateBalance(db*gorm.DB,addressstring,node*Node,assetstring,assetIDuint64,blockHeightint64)error{......//UPDATE}else{//ERC20balancebalanceBigInt,decimal,err:=node.GetERC20Balance(address,asset)iferr!=nil{returnerr}......}addressInfo:=orm.Address{Address:address}iferr:=db.Select("id").Where("address=?",address).Find(&addressInfo).Error;err!=nil{errors.Wrap(err,"errselectaddress")returnnil}balance:=&orm.Balance{AddressID:addressInfo.ID,AssetID:assetID,Balance:value,PendingBalance:pendingValue,LastUpdateBlock:uint64(blockHeight),}returnsaveBalance(db,balance。
大咖零距離 | 如何在幣圈期貨市場上久賭必贏?:5月19日18:00,實盤大V uTy做客金色財經《大咖零距離》直播間,將分享《如何在幣圈期貨市場上久賭必贏?》,敬請關注,欲進群觀看直播掃描下圖二維碼即可。
?[2020/5/19]
UTXO合并工具
很多朋友都遇到過UTXO太碎導致交易不成功的現象,Bycoin通過這款工具可以一鍵解決此類用戶的問題。
什么是UTXO
UTXO是UnspentTransactionOutput的縮寫,意思是未花費的輸出,可以簡單理解為還沒有用掉的收款。UTXO核心設計思路是:它記錄交易事件,而不記錄最終狀態。要計算某個用戶有多少幣,就要對其錢包里所有的UTXO求和,得到結果就是他的持幣數量。
比原鏈和比特幣一樣,也是采用UTXO模型。
為什么需要UTXO合并
我們看到UTXO模型中,任何一筆交易的輸入都是前一筆交易的輸出,然后當你的UTXO數量非常多時,你的交易會有很多的輸入,從而整體的交易體積會變大,因為區塊的容量有限制,為了防止有人惡意使用大量小的UTXO構建一筆體積非常大交易,從而出現堵塞區塊的出現,比原鏈限制了輸入UTXO的個數最大為20個,當你UTXO太多時,可能會出現交易不成功的現象,那么我們需要將UTXO合并工具,通過發送交易給自己,將小額的UTXO合并成大的UTXO。
大咖零距離 | 如何盡量的以小博大:1月3日20:00,金色盤面邀請實盤大V爆哥做客金色財經《大咖零距離》直播間,將分享《如何盡量的以小博大》,敬請關注,欲進群觀看直播掃描海報二維碼報名即可![2020/1/3]
UTXO合并工具做了什么?
UTXO合并工具首先判斷是否有合并的余額,以及是否需要合并
balance,err:=coin.CalcBalance(s.DB.Slave(),account,req.Asset,req.Confirmation)iferr!=nil{returnnil,err}ifbalance.Cmp(big.NewInt(0).SetUint64(totalAmount))<0{returnnil,errors.Wrap(types.ErrInsufficientBalance,fmt.Sprintf("balance%sless%d",balance.String(),totalAmount)。然后會尋找該賬戶關聯的所有的UTXO
utxoFinder:=coin.NewUTXOFinderWithFindStrategy(s.DB.Slave(),ormCoin,account,builder.EstimateGas,builder.FindUTXOs)ifreq.SpendAll{optUTXOs,err=utxoFinder.PrepareAllUTXOs(req.Asset,req.Confirmation,s.Cfg.Coin.DesiredUtxoCount)iferr!=nil{returnnil,errors.Wrap(err,"prepareallutxos"。iflen(optUTXOs)==0{optUTXOs,_,err=utxoFinder.PrepareUTXOs(req.Asset,totalAmount,req.Confirmation,s.Cfg.Coin.DesiredUtxoCount)iferr!=nil{returnnil,errors.Wrap(err,"prepareUTXOs"。if!req.ForbidChainTx&&len(optUTXOs)>s.Cfg.Coin.ChainTxMinUTXONum&&(s.Cfg.Coin.ChainTxMergeGas==0||req.Asset==consensus.BTMAssetID.String()){chainUTXOs:=optUTXOsif!req.SpendAll{chainUTXOs,err=utxoFinder.PrepareChainUTXOs(req.Asset,totalAmount,req.Confirmation,s.Cfg.Coin.DesiredUtxoCount,s.Cfg.Coin.ChainTxMinUTXONum,s.Cfg.Coin.ChainTxMergeGas)iferr!=nil{returnnil,errors.Wrap(err,"preparechainutxos"。最后通過鏈式交易進行合并。
動態 | Coinbase試驗如何讓用戶更好地控制個人信息:據coindesk消息,Coinbase正在試驗如何讓用戶更好地控制他們的個人信息。Coinbase身份團隊的產品經理B Byrne表示:“正在創建依賴于Coinbase產品(如其移動錢包)與dapp資源管理器之間的橋梁。我正在觀察dapps,哪些客戶正在使用哪些dapps。這可能是一個很好的指標,表明我們的客戶希望在鏈上開展哪些類型的活動。”[2018/12/6]
chainTxs,utxos,err:=builder.BuildChain(s.TxDecoder,chainUTXOs,req.Asset,s.NetParams,s.Cfg.Coin.ChainTxMinUTXONum,s.Cfg.Coin.ChainTxMergeGas)iferr!=nil{returnnil,errors.New("buildtxchain"。for_,chainTx:=rangechainTxs{resp,err:=s.createBuildPaymentResp(account,chainTx.OptUtxos,chainTx.Fee,chainTx.Tx,chainTx.SigningInstructions,"")iferr!=nil{returnnil,err}result=append(result,resp。optUTXOs=utxos}fee:=builder.EstimateGas(len(optUTXOs),account.M(),account.N())resp,err:=s.buildPaymentWithUTXO(req,req.Asset,ormCoin,account,optUTXOs,fee,builder)iferr!=nil{returnnil,errors.Wrap(err,"buildpayment"。returnappend(result,resp),nil}
金色財經現場報道 海納云CTO鄒均:區塊鏈技術難點在于如何讓所有節點統一步調:金色財經現場報道,在2018區塊鏈技術及應用峰會上,海納云CTO鄒均認為,區塊鏈技術當前的限制難點在分布式系統中讓所有節點統一步調,區塊鏈目前存在性能限制、擴展性限制、易用性限制、兼容性跨鏈互聯限制、存儲限制、治理限制、軟件升級限制等問題。[2018/3/31]
2月27日,CFTC公布了最新一期CME比特幣期貨周報,最新統計周期內BTC雖然一度取得了又一輪10000美元級別的可觀漲幅,但是在統計周期中后段迅速回吐漲幅,最終整個統計周期以小幅下跌收場.
1900/1/1 0:00:00本文作者為NewBloc策略分析師Barry,5年外匯黃金市場交易經歷。隨著美債收益率持續走高,對于全球金融資產而言無疑已經構成了一定的威脅,且流動性在逐漸褪去,這對于高估值和高投機性的品種或將.
1900/1/1 0:00:00來源:證券日報,作者:邢萌日前,科技部就“十四五”國家重點研發計劃“區塊鏈”等18個重點專項2021年度項目申報指南向社會征求意見和建議,征求意見起止時間為2月1日至2月21日.
1900/1/1 0:00:00現在又到了一個恐懼和懷疑可能很快就會籠罩市場的時刻。尤其是比特幣的新手投資者,他們可能在4萬美元的時候買入,現在看著負的PnL,很難說清楚現在到底是什么感覺.
1900/1/1 0:00:00摩根大通進行的一項調查發現,在目前沒有交易過加密貨幣的公司中,有五分之一機構投資者認為他們的公司未來可能會交易加密貨幣.
1900/1/1 0:00:00據GitHub顯示,2月28日Vitalik已更新EIP-3298提案,提案內容為在倫敦升級中移除「執行SELFDESTRUCT獲得Gas費退款」的規則.
1900/1/1 0:00:00