本文整理匯總了Golang中github.com/FactomProject/factomd/common/interfaces.IState.FetchPaidFor方法的典型用法代碼示例。如果您正苦於以下問題:Golang IState.FetchPaidFor方法的具體用法?Golang IState.FetchPaidFor怎麽用?Golang IState.FetchPaidFor使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類github.com/FactomProject/factomd/common/interfaces.IState
的用法示例。
在下文中一共展示了IState.FetchPaidFor方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: HandleV2EntryACK
func HandleV2EntryACK(state interfaces.IState, params interface{}) (interface{}, *primitives.JSONError) {
ackReq := new(AckRequest)
err := MapToObject(params, ackReq)
if err != nil {
return nil, NewInvalidParamsError()
}
if ackReq.TxID == "" && ackReq.FullTransaction == "" {
return nil, NewInvalidParamsError()
}
eTxID := ""
ecTxID := ""
if ackReq.TxID == "" {
eTxID, ecTxID = DecodeTransactionToHashes(ackReq.FullTransaction)
if ecTxID == "" && eTxID == "" {
return nil, NewUnableToDecodeTransactionError()
}
}
//TODO: fetch entries, ec TXs from state as well
//We didn't receive a full transaction, but a transaction hash
//We have to figure out which transaction hash we got
if ecTxID == "" && eTxID == "" {
h, err := primitives.NewShaHashFromStr(ackReq.TxID)
if err != nil {
return nil, NewInvalidParamsError()
}
entry, err := state.FetchEntryByHash(h)
if err != nil {
return nil, NewInternalError()
}
if entry != nil {
eTxID = ackReq.TxID
} else {
ec, err := state.FetchECTransactionByHash(h)
if err != nil {
return nil, NewInternalError()
}
//fmt.Printf("ec - %v\n", ec)
if ec != nil {
ecTxID = ackReq.TxID
eTxID = ec.GetEntryHash().String()
}
}
}
answer := new(EntryStatus)
answer.CommitTxID = ecTxID
answer.EntryHash = eTxID
if answer.CommitTxID == "" && answer.EntryHash == "" {
//We know nothing about the transaction, so we return unknown status
answer.CommitData.Status = AckStatusUnknown
answer.EntryData.Status = AckStatusUnknown
return answer, nil
}
//Fetching the second part of the transaction pair
if answer.EntryHash == "" {
h, err := primitives.NewShaHashFromStr(answer.EntryHash)
if err != nil {
return nil, NewInvalidParamsError()
}
ec, err := state.FetchECTransactionByHash(h)
if err != nil {
return nil, NewInternalError()
}
if ec != nil {
answer.EntryHash = ec.GetEntryHash().String()
}
}
if answer.CommitTxID == "" {
h, err := primitives.NewShaHashFromStr(answer.EntryHash)
if err != nil {
return nil, NewInvalidParamsError()
}
ec, err := state.FetchPaidFor(h)
if err != nil {
return nil, NewInternalError()
}
if ec != nil {
answer.CommitTxID = ec.String()
}
}
//Fetching statuses
if answer.CommitTxID == "" {
answer.CommitData.Status = AckStatusUnknown
} else {
h, err := primitives.NewShaHashFromStr(answer.CommitTxID)
if err != nil {
return nil, NewInvalidParamsError()
}
status, txid, txTime, blockTime, err := state.GetACKStatus(h)
//.........這裏部分代碼省略.........