本文整理汇总了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),
}
}