Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
f37248b
unit test that acts as demo of A*B/C when A and B need mulw
jannotti Jun 19, 2021
02ad3fe
tx_begin, tx_field, tx_submit
jannotti Jun 17, 2021
e0c81cd
Overpaid Fees available in app; AppAddress as an app field; typos
jannotti Aug 3, 2021
24f4b62
e2e improvements
jannotti Aug 6, 2021
f3a02d7
More explicit about allowable fields
jannotti Aug 12, 2021
806dc94
Ensure disassemble/reassemble cycle works in testProg.
jannotti Aug 14, 2021
ad3f328
Simplify rewards handling in ledger eval tests
jannotti Aug 14, 2021
8084e69
txgroup changes
jannotti Aug 17, 2021
ca994d3
More complete txx_* order checking, better pay, axfer in teal
jannotti Aug 23, 2021
3474fb5
Move EvalDelta and LogItem our of basics, into transactions.
jannotti Aug 23, 2021
d43b0e2
Populate the ApplyData with inner transactions.
jannotti Aug 24, 2021
8b1ed63
Lint fixes
jannotti Aug 24, 2021
da0870a
Docs demanded by lint.
jannotti Aug 24, 2021
777ad53
Merge branch 'master' into application-actions
jannotti Aug 25, 2021
b2edead
Update e2e test as min balance and fees are handled properly now.
jannotti Aug 27, 2021
8939407
msgpack EvalDelta properly after move to transactions package
jannotti Aug 28, 2021
acf6669
Prevent rewards from confusing integration test
jannotti Aug 30, 2021
7d81cf9
Integration test for axfer in apps
jannotti Aug 30, 2021
72f7b16
Clawback integration test
jannotti Aug 30, 2021
1a19c37
Expose inner-txns to rest API
jannotti Aug 31, 2021
064b70c
Confirm msgpack of innetr-txns
jannotti Aug 31, 2021
77ef701
oas3 update
jannotti Sep 1, 2021
30ffc3b
Confirm blocks API and inner-txns is ommitted when empty
jannotti Sep 1, 2021
08d7b4a
Address hashing unit tests
jannotti Sep 1, 2021
e10d20a
Code review improvements
jannotti Sep 1, 2021
a36395e
demote importance of innertxns in EvalContext
jannotti Sep 1, 2021
f3f8ed9
Compare inner txns for verifiying blocks
jannotti Sep 1, 2021
2ef6d9f
Maximum number of internal transactions is a consensus param = 8.
jannotti Sep 2, 2021
720471e
To the moon!
jannotti Sep 2, 2021
fef2a1e
Merge branch 'master' into application-actions
jannotti Sep 2, 2021
323ef59
Confirm that modifiedAccounts returns inner participants.
jannotti Sep 2, 2021
3a3febf
Suggested Tests
jannotti Sep 2, 2021
d18a924
More tests. Jason P is a taskmaster.
jannotti Sep 2, 2021
6ba1f0e
Correct for changed prefix (appID) for app account hash.
jannotti Sep 2, 2021
7d3e1e9
Remove LogItem, since now logs can't have non-zero apps, ever.
jannotti Sep 2, 2021
5ba3cc2
linting
jannotti Sep 3, 2021
052b5ff
Jason's single app rekey test
jannotti Sep 3, 2021
6287640
Widen Authorizer interface to convey errors
jannotti Sep 3, 2021
0e9b0bf
Spec fixes, naming of "inner transactions"
jannotti Sep 3, 2021
4fc2015
Eliminate logitem in e2e tests
jannotti Sep 3, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions cmd/opdoc/tmLanguage.go
Original file line number Diff line number Diff line change
Expand Up @@ -172,10 +172,11 @@ func buildSyntaxHighlight() *tmLanguage {
Name: "keyword.other.unit.teal",
Match: fmt.Sprintf("^(%s)\\b", strings.Join(names, "|")),
})
// For these four, accumulate into allArithmetics,
// For these, accumulate into allArithmetics,
// and only add to keyword.Patterns later, when all
// have been collected.
case "Arithmetic", "Byte Array Slicing", "Byteslice Arithmetic", "Byteslice Logic":
case "Arithmetic", "Byte Array Slicing", "Byte Array Arithmetic",
"Byte Array Logic", "Inner Transactions":
escape := map[rune]bool{
'*': true,
'+': true,
Expand Down
8 changes: 8 additions & 0 deletions config/consensus.go
Original file line number Diff line number Diff line change
Expand Up @@ -283,6 +283,9 @@ type ConsensusParams struct {
// maximum sum of the lengths of the key and value of one app state entry
MaxAppSumKeyValueLens int

// maximum number of inner transactions that can be created by an app call
MaxInnerTransactions int

// maximum number of applications a single account can create and store
// AppParams for at once
MaxAppsCreated int
Expand Down Expand Up @@ -431,6 +434,9 @@ var MaxStateDeltaKeys int
// any version, used only for decoding purposes. Never decrease this value.
var MaxLogCalls int

// MaxInnerTransactions is the maximum number of inner transactions that may be created in an app call.
var MaxInnerTransactions int

// MaxLogicSigMaxSize is the largest logical signature appear in any of the supported
// protocols, used for decoding purposes.
var MaxLogicSigMaxSize int
Expand Down Expand Up @@ -494,6 +500,7 @@ func checkSetAllocBounds(p ConsensusParams) {
// There is no consensus parameter for MaxLogCalls and MaxAppProgramLen as an approximation
// Its value is much larger than any possible reasonable MaxLogCalls value in future
checkSetMax(p.MaxAppProgramLen, &MaxLogCalls)
checkSetMax(p.MaxInnerTransactions, &MaxInnerTransactions)
}

// SaveConfigurableConsensus saves the configurable protocols file to the provided data directory.
Expand Down Expand Up @@ -1015,6 +1022,7 @@ func initConsensusProtocols() {

// Enable App calls to pool budget in grouped transactions
vFuture.EnableAppCostPooling = true
vFuture.MaxInnerTransactions = 16

// Allow 50 app opt ins
vFuture.MaxAppsOptedIn = 50
Expand Down
153 changes: 71 additions & 82 deletions daemon/algod/api/algod.oas2.json
Original file line number Diff line number Diff line change
Expand Up @@ -811,7 +811,10 @@
],
"responses": {
"200": {
"$ref": "#/responses/PendingTransactionResponse"
"description": "Given a transaction id of a recently submitted transaction, it returns information about it. There are several cases when this might succeed:\n- transaction committed (committed round \u003e 0)\n- transaction still in the pool (committed round = 0, pool error = \"\")\n- transaction removed from pool due to error (committed round = 0, pool error != \"\")\n\nOr the transaction may have happened sufficiently long ago that the node no longer remembers it, and this will return an error.",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

After taking another look, this should probably be "OK", since the real description is already on the endpoint.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You might have deleted some context on this one. Should I resolve the conversation, or do you think there's something to be done here?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, my comment was ambiguous. I mean the description field here should probably have value OK, since I believe it's purpose is to describe what a 200 response means. For example see the respones for /v2/applications/{application-id}.

"schema": {
"$ref": "#/definitions/PendingTransactionResponse"
}
},
"400": {
"description": "Bad Request",
Expand Down Expand Up @@ -1748,7 +1751,7 @@
"logs": {
"type": "array",
"items": {
"$ref": "#/definitions/LogItem"
"type": "string"
Copy link
Contributor

@jasonpaulos jasonpaulos Sep 3, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should add "format": "byte" here too to convey this is a base64 encoded binary string. This can maybe be done in a separate PR though.

}
},
"cost": {
Expand Down Expand Up @@ -1921,21 +1924,79 @@
}
}
},
"LogItem": {
"description": "Application Log",
"PendingTransactionResponse": {
"description": "Details about a pending transaction. If the transaction was recently confirmed, includes confirmation details like the round and reward details.",
"type": "object",
"required": [
"id",
"value"
"txn",
"pool-error"
],
"properties": {
"id": {
"description": "unique application identifier",
"asset-index": {
"description": "The asset index if the transaction was found and it created an asset.",
"type": "integer"
},
"application-index": {
"description": "The application index if the transaction was found and it created an application.",
"type": "integer"
},
"value": {
"description": " base64 encoded log message",
"close-rewards": {
"description": "Rewards in microalgos applied to the close remainder to account.",
"type": "integer"
},
"closing-amount": {
"description": "Closing amount for the transaction.",
"type": "integer"
},
"asset-closing-amount": {
"description": "The number of the asset's unit that were transferred to the close-to address.",
"type": "integer"
},
"confirmed-round": {
"description": "The round where this transaction was confirmed, if present.",
"type": "integer"
},
"pool-error": {
"description": "Indicates that the transaction was kicked out of this node's transaction pool (and specifies why that happened). An empty string indicates the transaction wasn't kicked out of this node's txpool due to an error.\n",
"type": "string"
},
"receiver-rewards": {
"description": "Rewards in microalgos applied to the receiver account.",
"type": "integer"
},
"sender-rewards": {
"description": "Rewards in microalgos applied to the sender account.",
"type": "integer"
},
"local-state-delta": {
"description": "\\[ld\\] Local state key/value changes for the application being executed by this transaction.",
"type": "array",
"items": {
"$ref": "#/definitions/AccountStateDelta"
}
},
"global-state-delta": {
"description": "\\[gd\\] Global state key/value changes for the application being executed by this transaction.",
"$ref": "#/definitions/StateDelta"
},
"logs": {
"description": "\\[lg\\] Logs for the application being executed by this transaction.",
"type": "array",
"items": {
"type": "string"
}
},
"inner-txns": {
"description": "Inner transactions produced by application execution.",
"type": "array",
"items": {
"$ref": "#/definitions/PendingTransactionResponse"
}
},
"txn": {
"description": "The raw signed transaction.",
"type": "object",
"x-algorand-format": "SignedTransaction"
}
}
}
Expand Down Expand Up @@ -2278,78 +2339,6 @@
}
}
},
"PendingTransactionResponse": {
"description": "Given a transaction id of a recently submitted transaction, it returns information about it. There are several cases when this might succeed:\n- transaction committed (committed round \u003e 0)\n- transaction still in the pool (committed round = 0, pool error = \"\")\n- transaction removed from pool due to error (committed round = 0, pool error != \"\")\n\nOr the transaction may have happened sufficiently long ago that the node no longer remembers it, and this will return an error.",
"schema": {
"description": "Details about a pending transaction. If the transaction was recently confirmed, includes confirmation details like the round and reward details.",
"type": "object",
"required": [
"txn",
"pool-error"
],
"properties": {
"asset-index": {
"description": "The asset index if the transaction was found and it created an asset.",
"type": "integer"
},
"application-index": {
"description": "The application index if the transaction was found and it created an application.",
"type": "integer"
},
"close-rewards": {
"description": "Rewards in microalgos applied to the close remainder to account.",
"type": "integer"
},
"closing-amount": {
"description": "Closing amount for the transaction.",
"type": "integer"
},
"asset-closing-amount": {
"description": "The number of the asset's unit that were transferred to the close-to address.",
"type": "integer"
},
"confirmed-round": {
"description": "The round where this transaction was confirmed, if present.",
"type": "integer"
},
"pool-error": {
"description": "Indicates that the transaction was kicked out of this node's transaction pool (and specifies why that happened). An empty string indicates the transaction wasn't kicked out of this node's txpool due to an error.\n",
"type": "string"
},
"receiver-rewards": {
"description": "Rewards in microalgos applied to the receiver account.",
"type": "integer"
},
"sender-rewards": {
"description": "Rewards in microalgos applied to the sender account.",
"type": "integer"
},
"local-state-delta": {
"description": "\\[ld\\] Local state key/value changes for the application being executed by this transaction.",
"type": "array",
"items": {
"$ref": "#/definitions/AccountStateDelta"
}
},
"global-state-delta": {
"description": "\\[gd\\] Global state key/value changes for the application being executed by this transaction.",
"$ref": "#/definitions/StateDelta"
},
"logs": {
"description": "\\[lg\\] Logs for the application being executed by this transaction.",
"type": "array",
"items": {
"$ref": "#/definitions/LogItem"
}
},
"txn": {
"description": "The raw signed transaction.",
"type": "object",
"x-algorand-format": "SignedTransaction"
}
}
}
},
"PendingTransactionsResponse": {
"description": "A potentially truncated list of transactions currently in the node's transaction pool. You can compute whether or not the list is truncated if the number of elements in the **top-transactions** array is fewer than **total-transactions**.",
"schema": {
Expand Down
Loading