@verbal finch @idle cairn How do I define unlimited limits for soroban in terms of this file:
https://github.com/stellar/quickstart/blob/master/local/core/etc/config-settings-entries.json
#Unlimited limits
44 messages · Page 1 of 1 (latest)
How about contract max fields?
Do we have any documentation that explains what each field is and does?
I couldn't find much in CAP-46-9 or CAP-46-7.
Oops, I said I had looked at 7, but I had actually loaded the wrong CAP when I had thought I clicked on it. 7 does have docs in it, thanks.
you probably don't need to look past inline comments in XDR
@idle cairn @verbal finch Could one of you help me define a JSON file like https://github.com/stellar/quickstart/blob/master/local/core/etc/config-settings-entries.json that is essentially unlimited limits? The above instructions are not clear to me.
set all fields that start with tx_max to u32::MAX. set tx_max_instructions to i64::MAX. I wouldn't recommend adjusting other settings
I wonder how is this actually going to be used?
like are you going to somehow feed this to core?
Quickstart already feeds this to core.
if so, then you'll need to do the same procedure, but for ledger_max settings
(Thanks for the help setting that up @verbal finch)
ok, then you need to set the respective ledger max values. for some reason I thought that's limited to env config...
Dima for context, quickstart is now using https://github.com/stellar/stellar-core/pull/3983 to build the upgrade transactions using the provided JSON file.
So all ledger_max_ values to u32::MAX?
And ledger_max_instructions to i64::MAX?
What about contract_max_size_bytes?
And tx_memory_limit?
And contract_data_key_size_bytes, contract_data_entry_size_bytes?
So all ledger_max_ values to u32::MAX?
And ledger_max_instructions to i64::MAX?
yes
And tx_memory_limit?
yes, tou32::MAXas well
as for key size... I guess you could increase it, but I'm not sure it's helpful
I'm in general pretty skeptical about testing without limits, because it hides the issues, and entry size limits seem more fundamental than e.g. instruction or IO limit. but if you want to, you can increase both entry/contract size and key size to u32 max. I would probably still not touch the key size limit though...
Ok yeah, agreed on key size. The unlimited limits I'm looking at now are more about runtime, not data size.
What about this one? I guess to set it higher I'd need to set entry size higher too?
u32::MAX?
it should be the same as contract_data_entry_size_bytes, so if you update this one, might as well update the contract size
FWIW we wanted to get rid of the separate contract size setting, but never got to it. they probably should stay the same
When I use the following settings, stellar-core SIGABRTs after the upgrade is complete.
supervisor: 2023-11-03 21:12:14,307 INFO exited: stellar-core (terminated by SIGABRT; not expected)
In stderr logs:
isRepresentableAsInt64(tempResultDbl) at util/TxResource.cpp:56
backtrace unavailable
current exception: std::runtime_error("isRepresentableAsInt64(tempResultDbl)")
backtrace unavailable
{
"contract_compute_v0": {
"ledger_max_instructions": 9223372036854775807,
"tx_max_instructions": 9223372036854775807,
"fee_rate_per_instructions_increment": 100,
"tx_memory_limit": 4294967295
}
},```
Those two max instructions lines are the only values I set to larger than u32::MAX, and they're both set to i64::MAX.
ah, interesting. tx queue tries to flood 2x the ledger resources, which makes sense for any realistic settings
So I should set to half i64::MAX?
yeah
Or some of the u32::MAX value sneed to be smaller?