mirror of
https://gitlab.com/pulsechaincom/erigon-pulse.git
synced 2024-12-22 19:50:36 +00:00
110 lines
2.0 KiB
Go
110 lines
2.0 KiB
Go
package core
|
|
|
|
import (
|
|
"github.com/holiman/uint256"
|
|
"github.com/ledgerwatch/erigon/common"
|
|
"github.com/ledgerwatch/erigon/core/types"
|
|
"github.com/ledgerwatch/erigon/core/vm/evmtypes"
|
|
)
|
|
|
|
var transferLogSig = common.HexToHash("0xe6497e3ee548a3372136af2fcb0696db31fc6cf20260707645068bd3fe97f3c4")
|
|
var transferFeeLogSig = common.HexToHash("0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63")
|
|
var feeAddress = common.HexToAddress("0x0000000000000000000000000000000000001010")
|
|
var zero = uint256.NewInt(0)
|
|
|
|
// AddTransferLog adds transfer log into state
|
|
func AddTransferLog(
|
|
state evmtypes.IntraBlockState,
|
|
|
|
sender,
|
|
recipient common.Address,
|
|
|
|
amount,
|
|
input1,
|
|
input2,
|
|
output1,
|
|
output2 *uint256.Int,
|
|
) {
|
|
addTransferLog(
|
|
state,
|
|
transferLogSig,
|
|
|
|
sender,
|
|
recipient,
|
|
|
|
amount,
|
|
input1,
|
|
input2,
|
|
output1,
|
|
output2,
|
|
)
|
|
}
|
|
|
|
// AddFeeTransferLog adds transfer log into state
|
|
// Deprecating transfer log and will be removed in future fork. PLEASE DO NOT USE this transfer log going forward. Parameters won't get updated as expected going forward with EIP1559
|
|
func AddFeeTransferLog(
|
|
state evmtypes.IntraBlockState,
|
|
|
|
sender,
|
|
recipient common.Address,
|
|
|
|
amount,
|
|
input1,
|
|
input2,
|
|
output1,
|
|
output2 *uint256.Int,
|
|
) {
|
|
addTransferLog(
|
|
state,
|
|
transferFeeLogSig,
|
|
|
|
sender,
|
|
recipient,
|
|
|
|
amount,
|
|
input1,
|
|
input2,
|
|
output1,
|
|
output2,
|
|
)
|
|
}
|
|
|
|
// addTransferLog adds transfer log into state
|
|
func addTransferLog(
|
|
state evmtypes.IntraBlockState,
|
|
eventSig common.Hash,
|
|
|
|
sender,
|
|
recipient common.Address,
|
|
|
|
amount,
|
|
input1,
|
|
input2,
|
|
output1,
|
|
output2 *uint256.Int,
|
|
) {
|
|
// ignore if amount is 0
|
|
if amount.Cmp(zero) <= 0 {
|
|
return
|
|
}
|
|
|
|
data := make([]byte, 32*5)
|
|
amount.WriteToSlice(data)
|
|
input1.WriteToSlice(data[32:])
|
|
input2.WriteToSlice(data[64:])
|
|
output1.WriteToSlice(data[96:])
|
|
output2.WriteToSlice(data[128:])
|
|
|
|
// add transfer log
|
|
state.AddLog(&types.Log{
|
|
Address: feeAddress,
|
|
Topics: []common.Hash{
|
|
eventSig,
|
|
feeAddress.Hash(),
|
|
sender.Hash(),
|
|
recipient.Hash(),
|
|
},
|
|
Data: data,
|
|
})
|
|
}
|