OSDN Git Service

feat: add processIssuing (#152)
[bytom/vapor.git] / vendor / github.com / bytom / protocol / bc / types / issuance.go
diff --git a/vendor/github.com/bytom/protocol/bc/types/issuance.go b/vendor/github.com/bytom/protocol/bc/types/issuance.go
new file mode 100644 (file)
index 0000000..ff8feeb
--- /dev/null
@@ -0,0 +1,59 @@
+package types
+
+import (
+       "github.com/bytom/crypto/sha3pool"
+       "github.com/bytom/protocol/bc"
+)
+
+// IssuanceInput satisfies the TypedInput interface and represents a issuance.
+type IssuanceInput struct {
+       Nonce  []byte
+       Amount uint64
+
+       AssetDefinition []byte
+       VMVersion       uint64
+       IssuanceProgram []byte
+       Arguments       [][]byte
+}
+
+// NewIssuanceInput create a new IssuanceInput struct.
+func NewIssuanceInput(nonce []byte, amount uint64, issuanceProgram []byte, arguments [][]byte, assetDefinition []byte) *TxInput {
+       return &TxInput{
+               AssetVersion: 1,
+               TypedInput: &IssuanceInput{
+                       Nonce:           nonce,
+                       Amount:          amount,
+                       AssetDefinition: assetDefinition,
+                       VMVersion:       1,
+                       IssuanceProgram: issuanceProgram,
+                       Arguments:       arguments,
+               },
+       }
+}
+
+// InputType is the interface function for return the input type.
+func (ii *IssuanceInput) InputType() uint8 { return IssuanceInputType }
+
+// AssetID calculate the assetID of the issuance input.
+func (ii *IssuanceInput) AssetID() bc.AssetID {
+       defhash := ii.AssetDefinitionHash()
+       return bc.ComputeAssetID(ii.IssuanceProgram, ii.VMVersion, &defhash)
+}
+
+// AssetDefinitionHash return the hash of the issuance asset definition.
+func (ii *IssuanceInput) AssetDefinitionHash() (defhash bc.Hash) {
+       sha := sha3pool.Get256()
+       defer sha3pool.Put256(sha)
+       sha.Write(ii.AssetDefinition)
+       defhash.ReadFrom(sha)
+       return defhash
+}
+
+// NonceHash return the hash of the issuance asset definition.
+func (ii *IssuanceInput) NonceHash() (hash bc.Hash) {
+       sha := sha3pool.Get256()
+       defer sha3pool.Put256(sha)
+       sha.Write(ii.Nonce)
+       hash.ReadFrom(sha)
+       return hash
+}