本文整理匯總了Golang中github.com/skycoin/skycoin/src/coin.UxOut.CoinHours方法的典型用法代碼示例。如果您正苦於以下問題:Golang UxOut.CoinHours方法的具體用法?Golang UxOut.CoinHours怎麽用?Golang UxOut.CoinHours使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類github.com/skycoin/skycoin/src/coin.UxOut
的用法示例。
在下文中一共展示了UxOut.CoinHours方法的4個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: splitUnspent
func splitUnspent(t *testing.T, bc *Blockchain, ux coin.UxOut) coin.UxArray {
tx := coin.Transaction{}
hrs := ux.CoinHours(bc.Time())
if hrs < 2 {
log.Panic("Not enough hours, would generate duplicate output")
}
assert.Equal(t, ux.Body.Address, genAddress)
tx.PushInput(ux.Hash())
coinsA := ux.Body.Coins / 2
coinsB := coinsA
if (ux.Body.Coins/1e6)%2 == 1 {
coinsA = (ux.Body.Coins - 1e6) / 2
coinsB = coinsA + 1e6
}
tx.PushOutput(genAddress, coinsA, hrs/4)
tx.PushOutput(genAddress, coinsB, hrs/2)
tx.SignInputs([]cipher.SecKey{genSecret})
tx.UpdateHeader()
b, err := bc.NewBlockFromTransactions(coin.Transactions{tx}, bc.Time()+_incTime)
assert.Nil(t, err)
uxs, err := bc.ExecuteBlock(&b)
assert.Nil(t, err)
assert.Equal(t, len(uxs), 2)
return uxs
}
示例2: makeTransactionForChainWithHoursFee
func makeTransactionForChainWithHoursFee(t *testing.T, bc *Blockchain,
ux coin.UxOut, sec cipher.SecKey, hours, fee uint64) (coin.Transaction, cipher.SecKey) {
chrs := ux.CoinHours(bc.Time())
if chrs < hours+fee {
log.Panicf("CoinHours underflow. Have %d, need at least %d", chrs,
hours+fee)
}
assert.Equal(t, cipher.AddressFromPubKey(cipher.PubKeyFromSecKey(sec)), ux.Body.Address)
knownUx, exists := bc.GetUnspent().Get(ux.Hash())
assert.True(t, exists)
assert.Equal(t, knownUx, ux)
tx := coin.Transaction{}
tx.PushInput(ux.Hash())
p, newSec := cipher.GenerateKeyPair()
addr := cipher.AddressFromPubKey(p)
tx.PushOutput(addr, 1e6, hours)
coinsOut := ux.Body.Coins - 1e6
if coinsOut > 0 {
tx.PushOutput(genAddress, coinsOut, chrs-hours-fee)
}
tx.SignInputs([]cipher.SecKey{sec})
assert.Equal(t, len(tx.Sigs), 1)
assert.Nil(t, cipher.ChkSig(ux.Body.Address, cipher.AddSHA256(tx.HashInner(), tx.In[0]), tx.Sigs[0]))
tx.UpdateHeader()
assert.Nil(t, tx.Verify())
err := bc.VerifyTransaction(tx)
assert.Nil(t, err)
return tx, newSec
}
示例3: makeTransactionForChainWithFee
func makeTransactionForChainWithFee(t *testing.T, bc *Blockchain,
fee uint64) coin.Transaction {
ux := coin.UxOut{}
hrs := uint64(100)
for _, u := range bc.GetUnspent().Array() {
if ux.CoinHours(bc.Time()) > hrs {
ux = u
break
}
}
assert.Equal(t, ux.Body.Address, genAddress)
tx, _ := makeTransactionForChainWithHoursFee(t, bc, ux, genSecret, hrs,
fee)
return tx
}
示例4: NewBalanceFromUxOut
func NewBalanceFromUxOut(headTime uint64, ux *coin.UxOut) Balance {
return Balance{
Coins: ux.Body.Coins,
Hours: ux.CoinHours(headTime),
}
}