diff --git a/CHANGELOG.md b/CHANGELOG.md index ca2a7da345..cc7901da51 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -37,6 +37,14 @@ Ref: https://keepachangelog.com/en/1.0.0/ ## [Unreleased] +### Features + +* Create a script for updating links in the spec docs to proto messages [#2068](https://github.com/provenance-io/provenance/pull/2068). + +### Improvements + +* Update all the proto links in the spec docs to point to `v1.19.0` versions of the proto files [#2068](https://github.com/provenance-io/provenance/pull/2068). + ### Dependencies - Bump `github.com/hashicorp/go-getter` from 1.7.4 to 1.7.5 ([#2057](https://github.com/provenance-io/provenance/pull/2057)) diff --git a/scripts/identify-endpoints.awk b/scripts/identify-endpoints.awk new file mode 100644 index 0000000000..ae1b6b9a5f --- /dev/null +++ b/scripts/identify-endpoints.awk @@ -0,0 +1,111 @@ +# This awk script will process a proto file and output information about endpoint request and response message names. +# Example usage: awk -f identify-endpoints.awk +# To include debugging information in the output, provide these arguments to the awk command: -v debug='1' +# +# This file must be in the scripts/ directory so that the update-spec-links.sh script can find it. +# This script was designed only with update-spec-links.sh in mind, but exists +# as its own awk script file to help facilitate troubleshooting and maintenence. +# +# Each line of ouptut will have one of these formats: +# rpc::Request:;= +# rpc::Response:;= +# The value will be relative to the repo root directory (e.g. it will start with "proto/"). +# Note that the output has the twice. That makes it so we can find the entry by the start +# of the line and we have exactly what we need to replace it with after the semicolon. It saves us from +# having to also parse that out separately elsewhere. +# +# You can basically think of each line having this format: +# ; +# Where has the format: +# rpc::(Request|Response): +# And has the format: +# = +# +# The lines are generated in identify-links.awk. +# That script can also output lines. +# The update-spec-links.sh script will use the output of this script +# to convert entries into entries. +# +# This script is not a complete solution for identifying services and endpoints in proto +# files as it almost certainly does not account for all syntax options. For example, +# this will not handle cases when there are internal comments in rpc lines. It also +# assumes the service's closing brace is on a line of its own all the way to the left. +# I'm sure there are other ways that this does not accurately parse protobuf syntax. +# At the very least, it does allow for the endpoint to be defined with multiple lines. +# +{ + if (InService!="") { + # By assuming the proto file passes the linter, we can assume that, if a + # line starts with a closing curly brace, it's the end of the service section. + if (/^}/) { + if (debug!="") { print "DEBUG " FNR ": End of service section."; }; + InService=""; + next; + }; + + if (RpcLine!="") { + # If a previous line started an rpc definition, but didn't yet have all of it, + # append this line to what we previously had (effectively changing the newline into a space). + if (debug!="") { print "DEBUG " FNR ": rpc line continued: " $0; }; + RpcLine=RpcLine " " $0; + } else if (/^[[:space:]]*rpc/) { + # It's an endpoint definition line (or at least the start of it. + if (debug!="") { print "DEBUG " FNR ": rpc line Start: " $0; }; + RpcLine=$0; + } + + if (RpcLine ~ /rpc[[:space:]]+[^(]+\([^)]+\)[[:space:]]+returns[[:space:]]+\([^)]+\)/) { + # The rpc line should now have evertything we need in here. It'll have a format like this: + # rpc () returns ()[] + # It's possible that the whitespace in that format is actually multipe spaces. + if (debug!="") { print "DEBUG " FNR ": RpcLine: " RpcLine; }; + + # Extract the endpoint name by deleting the "rpc" part and leading spacing. + # Then delete everything after (and including) the first opening paren. + Endpoint=RpcLine; + if (debug!="") { print "DEBUG " FNR ": [1/3] Endpoint: " Endpoint; }; + sub(/^[[:space:]]*rpc[[:space:]]+/,"",Endpoint); + if (debug!="") { print "DEBUG " FNR ": [2/3] Endpoint: " Endpoint; }; + sub(/\(.*$/,"",Endpoint); + if (debug!="") { print "DEBUG " FNR ": [3/3] Endpoint: " Endpoint; }; + + # Extract the request name by deleting everything before (and including) the first open paren. + # Then delete evertying after (and including) the first closing paren. + Req=RpcLine; + if (debug!="") { print "DEBUG " FNR ": [1/3] Req: " Req; }; + sub(/^[^(]+\(/,"",Req); + if (debug!="") { print "DEBUG " FNR ": [2/3] Req: " Req; }; + sub(/\).*$/,"",Req); + if (debug!="") { print "DEBUG " FNR ": [3/3] Req: " Req; }; + + # Extract the response name by deleting everything before (and including) the open paran after the word "returns". + # Then delete everything after (and including) the first closing paren in what's left. + Resp=RpcLine; + if (debug!="") { print "DEBUG " FNR ": [1/3] Resp: " Resp; }; + sub(/^.*[[:space:]]returns[[:space:]]+\(/,"",Resp); + if (debug!="") { print "DEBUG " FNR ": [2/3] Resp: " Resp; }; + sub(/\).*$/,"",Resp); + if (debug!="") { print "DEBUG " FNR ": [3/3] Resp: " Resp; }; + + if (FILENAME=="") { + Source=""; + if (debug!="") { print "DEBUG " FNR ": No FILENAME found. Source: " Source; }; + } else { + # We need the source to be relative to the repo root, so strip out the stuff before that. + Source=FILENAME; + if (debug!="") { print "DEBUG " FNR ": [1/2] Source: " Source; }; + sub(/^.*\/proto\//,"proto/",Source); + if (debug!="") { print "DEBUG " FNR ": [2/2] Source: " Source; }; + } + + # Output a line each for the request and response. + print "rpc:" Endpoint ":Request:" Source ";" Req "=" Source; + print "rpc:" Endpoint ":Response:" Source ";" Resp "=" Source; + # We're done with the current RpcLine, go back to waiting for the next one. + RpcLine=""; + } + } else if (/^service /) { + if (debug!="") { print "DEBUG " FNR ": Start of service section."; }; + InService=$0; + } +} \ No newline at end of file diff --git a/scripts/identify-links.awk b/scripts/identify-links.awk new file mode 100644 index 0000000000..96f28c79fc --- /dev/null +++ b/scripts/identify-links.awk @@ -0,0 +1,286 @@ +# This awk script will process a markdown file and identify the desired content for each proto link. +# You MUST provide a value for LinkRx when invoking this script. +# Example usage: awk -v LinkRx='^\\+\\+\\+' -f identify-links.awk +# To include debugging information in the output, provide these arguments to the awk command: -v debug='1' +# +# This file must be in the scripts/ directory so that the update-spec-links.sh script can find it. +# This script was designed only with update-spec-links.sh in mind, but exists +# as its own awk script file to help facilitate troubleshooting and maintenence. +# The LinkRx must be provided as an arg because that script also needs that regex, +# and I didn't want to have to maintain it in multiple places. +# +# There are several possible formats for output lines: +# * If the message type can be detected: +# :;= +# * If the endpoint is detected, and the link is for the request: +# :;rpc::Request: +# * If the endpoint is detected, and the link is for the response: +# :;rpc::Response: +# * If there is a problem: +# :;ERROR: : +# +# After invoking this script, you should check the output for any lines with ";ERROR: " in them. +# The output from the identify-endpoints.awk script can be used to convert the ;rpc::(RequestResponse): +# lines to the ;= format. +# The output from the identify-messages.awk script can then be used to add the line numbers to the ;= lines. +# +# The is the one that this awk script is parsing. +# The is the number of the line that the link is on (in the ). +# The is extracted from the link and will be relative to the repo's root. +# The is identified by a markdown header or a link comment. +# The is also identified by a markdown header. +# See below for more information on the and values. +# +# When a link is found, context is used to identify the desired content of that link so that the correct line numbers can be identified. +# The desired content can either be a message/enum, or else it can be an endpoint request or response message. +# If it's a message or enum, the output will have this format (for the link): +# :;= +# The +# If we are in a request or response section, the endpoint request/response output format is used: +# :;rpc::(Request|Response): +# +# A line of interest is one that is a header line, link line, link comment line, or is "Request:" or "Response:". +# Only lines of interest are considered by this script. +# The rest of the markdown file's content is simply ignored. +# +# A link message html comment applies only to the next link: "" +# These are also often refered to as a "link comment" or "link message comment". +# Their use does not interrupt the other patterns described in here. +# This allows you to use them on any link without interfering with the other patterns. +# An error is generated if the next line of interest after a link comment is NOT a link. +# +# An "endpoint section" is identified in one of two ways: +# 1. A header of either "Msg/" or "Query/" (aka a "clearly defined endpoint header"). +# 2. A header that has a request and/or response section. +# +# A Request section is started by either a "Request" header (e.g. "### Request") or the line "Request:". +# It is ended at either the next header or the line "Response:" +# A Response section is started by either a "Response" header (e.g. "### Response") or the line "Response:". +# It is ended at the next header. +# +# In a request or response section, the endpoint is identied by the previous non-request/response header. +# +# Here are the patterns this script looks for. +# Note that the links should have an empty line before and after them, but +# they're not included in these examples to make them easier to read in here. +# +# Use the header that the link is under: +# ### MessageName +# +# Spaces are removed from the header strings, so this is treated the same way: +# ### Message Name +# +# A header like this can only be used for a single link. +# +# An endpoint header followed by request and/or response headers: +# ### EndpointName +# #### Request +# +# #### Response +# +# +# An endpoint header followed by "Request:" and/or "Response:" lines: +# ### EndpointName +# Request: +# +# Response: +# +# +# A clearly defined endpoint header followed by one or two links: +# ### Msg/EndpointName +# +# +# If there's only one link after such a header, it's assumed to be the request. +# Only "Msg/" and "Query/" are recognized prefixes for a clearly defined endpoint header. +# Without the "Msg/" or "Query/" prefix in the header, this script would think that the +# first link should refer to a message or enum with the same name as the "EndpointName", +# and an error would be generated for the second line. +# +# A link message html comment followed by a link: +# +# +# There cannot be any lines of interest between the comment and the link, but there can be boring lines. +# +# Here are some more complex examples. Again, there should be empty lines +# before and after each link, but they aren't included in these examples. +# +# A link comment under another message's header +# ### Message Name +# +# +# +# or even +# ### Message Name +# +# +# +# +# A link comment under a clearly defined endpoint header. +# ### Msg/EndpointName +# +# +# +# +# +# +# +# Troubleshooting +# +# Here are some example error lines, and what they might mean: +# +# "You must provide a LinkRx value (with -v LinkRx=...) to invoke this script" +# Cause: The LinkRx value was not provided when this awk script was invoked. +# Fix: Include these args in your awk command: -v LinkRx='...' +# +# "link message comment not above a link: " +# Cause: The first line of interest after a link comment line is not a link. +# Fix: Either delete the link comment line or else move it closer to the link. +# Note: The included in this error is the line number of the (non-link) +# line of interest, and NOT the line number of the link comment. +# +# "endpoint already has a request and response" +# Cause: There are three or more links under a "Msg/Endpoint" or "Query/Endpoint" header. +# Fix: Add a link comment above one or more links in the section. +# Note: The first link (without a link comment) is assumed to the the request, +# and the second is the response. So you don't need to put a link comment +# above those two, just the ones that are neither the request nor response. +# +# "multiple links found in endpoint (request|response) section" +# Cause: There is a request or response section in the markdown that has two or more links. +# Fix: Add a link comment above the non-request/response links. +# You might also consider instead adding headers above each of those links so that +# those messages can be easily linked to by other documentation. +# +# Note: The first link (without a link comment) is taken to be either the request +# or response (depending on the section). All other links must have a link comment. +# "could not identify desired content of link" +# Cause: There is probably two links in a non-endpoint section, but there might be other things that cause this. +# Fix: Either add a link comment or a new header above the problematic link. +# +{ + # Make sure that there's a LinkRx provided. This check is done on line one instead of a BEGIN block + # because I wanted the FILENAME in it, which isn't available in a BEGIN block. + if (FNR==1) { + if (LinkRx=="") { + print FILENAME ":0;ERROR: You must provide a LinkRx value (with -v LinkRx=...) to invoke this script"; + exit 1; + }; + if (debug!="") { print "DEBUG 0: LinkRx='" LinkRx "'"; }; + } + + IsLinkLine=(match($0, LinkRx)) ? "1": ""; + IsLineOfInterest=(IsLinkLine!="" || /^#/ || /^.*$/,"",Name); + LinkMessage=""; + } else if (LastHeader!="") { + Name=LastHeader; + sub(/^#+ /,"",Name); + gsub(/[[:space:]]+/,"",Name); + + if (Name ~ /^(Msg|Query)\//) { + if (debug!="") { print Lead "DEBUG: Identified endpoint entry."; }; + sub(/^(Msg|Query)\//,"",Name); + if (InReq=="" && InResp=="") { + TempReqResp="1"; + if (HaveReq=="") { + if (debug!="") { print Lead "DEBUG: First unlabeled link. Treating it as a request link."; }; + InReq="1"; + InResp=""; + } else if (HaveResp=="") { + if (debug!="") { print Lead "DEBUG: Second unlabeled link. Treating it as a request link."; }; + InReq=""; + InResp="1"; + } else { + if (debug!="") { print Lead "DEBUG: Third+ unlabeled link. Error."; }; + Err="endpoint " Name " already has a request and response"; + }; + }; + }; + + if (InReq!="") { + if (debug!="") { print Lead "DEBUG: In request section."; }; + if (HaveReq=="") { + Name="rpc:" Name ":Request"; + D=":"; + HaveReq="1"; + if (TempReqResp!="") { + InReq=""; + }; + } else { + Err="multiple links found in endpoint " Name " request section"; + }; + } else if (InResp!="") { + if (debug!="") { print Lead "DEBUG: In response section."; }; + if (HaveResp=="") { + Name="rpc:" Name ":Response"; + D=":"; + HaveResp="1"; + LastHeader=""; + if (TempReqResp!="") { + InResp=""; + }; + } else { + Err="multiple links found in endpoint " Name " response section"; + } + } else { + if (debug!="") { print Lead "DEBUG: In normal section."; }; + LastHeader=""; + }; + } else { + Err="could not identify desired content of link"; + }; + + if (Err=="") { + print Lead Name D ProtoFile; + } else { + print Lead "ERROR: " Err ": " $0; + }; + + if (LastHeader=="") { + InReq=""; + HaveReq=""; + InResp=""; + HaveResp=""; + }; + }; +} \ No newline at end of file diff --git a/scripts/identify-messages.awk b/scripts/identify-messages.awk new file mode 100644 index 0000000000..c08ace113d --- /dev/null +++ b/scripts/identify-messages.awk @@ -0,0 +1,100 @@ +# This awk script will process a proto file and output all the messages and their starting and ending lines. +# Example usage: awk -f identify-messages.awk +# To include debugging information in the output, provide these arguments to the awk command: -v debug='1' +# +# This file must be in the scripts/ directory so that the update-spec-links.sh script can find it. +# This script was designed only with update-spec-links.sh in mind, but exists +# as its own awk script file to help facilitate troubleshooting and maintenence. +# +# Each line of output will have the format: +# ;=#L-L +# The value will be relative to the repo root directory (e.g. it will start with "proto/"). +# The will be the line number of the first line of the message comment if there is such a comment. +# If there's no leading message comment, is the "message " line. +# The will be the line number of the closing brace of the message. +# +# The output of this script is used by update-spec-links.sh to convert entries like +# "=" into "#L-L". +# The leading semicolon is included at the start of each line so that, when grepping the output of this script, +# we can use -F but still match against the start of a line. Without the semicolon, +# grepping for something like Order=proto/... would also match entries for AskOrder and BidOrder. +# +# This script is not a complete solution for identifying the line numbers of protobuf messages and enums. +# It will fail to find nested types, and assumes the proto file passes the linter. +# +{ + if (MsgName!="") { + # If we have a message name, all we're really looking for is the closing curly brace. + if (/^}[[:space:]]*$/) { + if (debug!="") { print "DEBUG " FNR ": End of message: " $0; }; + MsgEnd=FNR; + } else { + if (debug!="") { print "DEBUG " FNR ": Still in message: " $0;}; + }; + } else if (/^[[:space:]]*$/) { + # Not in a message, and its an empty line. Reset the MsgStart. + # This ensures that the comment included above a message is just the comment for that message. + if (debug!="") { print "DEBUG " FNR ": Blank line, reset: " $0; }; + MsgStart=""; + } else { + # Non-empty line outside of a message. + # If we don't yet have a MsgStart, assume this is it (for now). + # This allows us to include message comments in the line number range. + if (MsgStart=="") { + MsgStart=FNR; + if (debug!="") { print "DEBUG " FNR ": Setting MsgStart=[" MsgStart "]: " $0; }; + }; + + # Finally, if this actually is the start of a message or enum, extract the name + # and check to see if this line is also the end of that message or enum. + if (/^(message|enum) /) { + # The line is a message or enum declaration. + if (debug!="") { print "DEBUG " FNR ": [1/3] Line: " $0; }; + # First remove any line-ending comments from the line. + sub(/\/\/.*$/,""); + if (debug!="") { print "DEBUG " FNR ": [2/3] Line: " $0; }; + # Then remove any internal comments and allow for the + # end of the comment to be on another line. + gsub(/\/\*.*(\*\/|$)/,""); + if (debug!="") { print "DEBUG " FNR ": [3/3] Line: " $0; }; + + # Now, Extract the message/enum name from whats. + MsgName=$0; + # Remove the leading "message" or "enum" text and whitespace. + sub(/^(message|enum)[[:space:]]+/,"",MsgName); + if (debug!="") { print "DEBUG " FNR ": [2/3] MsgName: " MsgName; }; + # Lastly, remove everything after (and including) the first space or opening curly brace. + sub(/[[:space:]{].*$/,"",MsgName); + if (debug!="") { print "DEBUG " FNR ": [3/3] MsgName: " MsgName; }; + + # If the (uncommented) line has a closing curly brace, assume it closes the message (e.g. an empty message). + # Otherwise, we now have a MsgName, so we're inside a message. + if (/}/) { + if (debug!="") { print "DEBUG " FNR ": Also is end of message."; }; + MsgEnd=FNR; + } else { + if (debug!="") { print "DEBUG " FNR ": Now at start of message content."; }; + }; + }; + }; + + # If we have everything, output a line about it and reset for the next one. + if (debug!="") { print "DEBUG " FNR ": MsgName=[" MsgName "], MsgStart=[" MsgStart "], MsgEnd=[" MsgEnd "]"; }; + if (MsgName!="" && MsgStart!="" && MsgEnd!="") { + if (FILENAME=="") { + Source=""; + if (debug!="") { print "DEBUG " FNR ": No FILENAME found. Source: " Source; }; + } else { + # We need the source to be relative to the repo root, so strip out the stuff before that. + Source=FILENAME; + if (debug!="") { print "DEBUG " FNR ": [1/2] Source: " Source; }; + sub(/^.*\/proto\//,"proto/",Source); + if (debug!="") { print "DEBUG " FNR ": [2/2] Source: " Source; }; + } + + print ";" MsgName "=" Source "#L" MsgStart "-L" MsgEnd; + MsgName=""; + MsgStart=""; + MsgEnd=""; + }; +} \ No newline at end of file diff --git a/scripts/update-spec-links.sh b/scripts/update-spec-links.sh new file mode 100755 index 0000000000..8a369338e4 --- /dev/null +++ b/scripts/update-spec-links.sh @@ -0,0 +1,718 @@ +#!/usr/bin/env bash +# This script will update all the proto reference links in our spec docs to have a new and correct line numbers. +# The following scripts must be in the same directory as this one: +# identify-links.awk +# identify-endpoints.awk +# identify-messages.awk + +simple_usage='Usage: ./update-spec-links.sh [] [ ...]' + +show_usage () { + cat << EOF +This script will update all the proto reference links in our spec docs. + +$simple_usage +[]: [--help] [--source (|--ref)|--source-is-ref] [--no-clean] [--quiet|--verbose] + +This script will identify the desired content of the links and update both the ref and line numbers in each link. + +The is the branch, tag, or commit that the updated links should have. +It is the part of the url after '/blob/' but before the file's path. +Example values and the a link they might produce: + Tag: 'v1.19.0' -> https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/marker/v1/marker.proto#L14-L26 + Branch: 'release/v1.19.x' -> https://github.com/provenance-io/provenance/blob/release/v1.19.x/proto/provenance/marker/v1/marker.proto#L14-L26 + Commit: '17b9b8c3e655b6a56840841b83252b241d01ff14' -> https://github.com/provenance-io/provenance/blob/17b9b8c3e655b6a56840841b83252b241d01ff14/proto/provenance/marker/v1/marker.proto#L14-L26 +The first non-flag argument is taken to be the , but it can also be preceded by the --ref flag if desired. + +By default the currently checked-out proto files are used to identify message line numbers and endpoint messages. +To use a different version as the source for this identification, provide the --source option. +The can be a branch, tag, or commit. +If you want to use the same as the , you can either provide the as "--ref" +(e.g. with the args: --source --ref) or with just the --source-is-ref flag. +Keep in mind that using the same source and ref means that the ref must already be available for download. + +By default, this will update all files under the current directory (recursively). +To limit this update to specific files or directories (recursively), provide them as extra arguments. + +To reduce output, you can provide the --quiet or -q flag. +For extra processing output, you can provide the --verbose or -v flag. +If multiple of --quiet -q --verbose and/or -v are given, the one last provided is used. + +A temporary directory is used for the source proto files and some helper/processing files. +By default, the source proto files will be copies of what's currently in your repo locally. +If a is identified, curl will be used to download those proto files from github. + +By default, the temp directory is deleted when the script ends (either successfully or with an error). +To keep the directory around regardless of outcome, supply the --no-clean flag. +To keep the directory around only in the case of errors, supply the --no-clean-on-error flag. +To always delete the directory (same as default behavior), supply the --always-clean flag. +These can also be provided as --clean never --clean ok or --clean always respectively. +If multiple --no-clean --no-clean-on-error --always-clean and/or --clean flags are provided, the last one is used. + +Example proto reference link line: ++++ https://github.com/provenance-io/provenance/blob/22740319ba4b3ba268b3720d4bee36d6c6b06b40/proto/provenance/marker/v1/marker.proto#L14-L25 + +In this example, the is '22740319ba4b3ba268b3720d4bee36d6c6b06b40'. + +For documentation on how the desired content of a link is determined, see identify-links.awk. + +EOF + +} + +# This script requires a few other scripts that must be in the same directory. +# To consistently find them, we'll need to know the absolute path to the dir with this script. +where_i_am="$( cd "$( dirname "${BASH_SOURCE:-$0}" )"; pwd -P )" + +# Define paths to each of the required scripts. +# Note that each of these can alternatively be defined using environment variables +# primarily so that it's easier to test/develop alternative versions of each one. +identify_messages_awk="${IDENTIFY_MESSAGES_AWK:-${where_i_am}/identify-messages.awk}" +identify_endpoints_awk="${IDENTIFY_ENDPOINTS_AWK:-${where_i_am}/identify-endpoints.awk}" +identify_links_awk="${IDENTIFY_LINKS_AWK:-${where_i_am}/identify-links.awk}" + +######################################################################################################################## +################################################ Read/Parse CLI args ################################################# +######################################################################################################################## + +declare files_in=() +declare dirs_in=() +clean='always' + +while [[ "$#" -gt '0' ]]; do + case "$1" in + -h|--help|help) + show_usage + exit 0 + ;; + -s|--source|--source-ref) + if [[ -z "$2" ]]; then + printf 'No argument provided after %s.\n' "$1" + exit 1 + fi + source_ref="$2" + shift + ;; + --source-is-ref|--source--ref) + source_ref='--ref' + ;; + -r|--ref) + if [[ -z "$2" ]]; then + printf 'No argument provided after %s.\n' "$1" + exit 1 + fi + if [[ -n "$ref" ]]; then + printf 'two s provided: %s and %s\n' "$ref" "$2" + exit 1 + fi + ref="$2" + shift + ;; + -q|--quiet) + quiet='YES' + verbose='' + ;; + -v|--verbose) + verbose='YES' + quiet='' + ;; + --output) + if [[ -z "$2" ]]; then + printf 'No argument provided after %s.\n' "$1" + exit 1 + fi + case "$2" in + q|quiet) + quiet='YES' + verbose='' + ;; + v|verbose) + quiet='' + verbose='YES' + ;; + n|normal|d|default) + quiet='' + verbose='' + ;; + *) + printf 'Unknown %s value: "%s". Must be one of: "quiet", "verbose", or "normal".\n' "$1" "$2" + exit 1 + ;; + esac + shift + ;; + --no-clean|--no-cleanup) + clean='never' + ;; + --no-clean-on-error|--no-cleanup-on-error) + clean='ok' + ;; + --always-clean|--always-cleanup) + clean='always' + ;; + --clean|--cleanup) + if [[ -z "$2" ]]; then + printf 'No argument provided after %s.\n' "$1" + exit 1 + elif [[ "$2" != 'never' && "$2" != 'ok' && "$2" != 'always' ]]; then + printf 'Unknown %s value: "%s". Must be one of: "never", "ok", or "always".\n' "$1" "$2" + exit 1 + fi + clean="$2" + shift + ;; + *) + if [[ -z "$ref" ]]; then + ref="$1" + elif [[ -d "$1" ]]; then + dirs_in+=( "$1" ) + elif [[ -f "$1" ]]; then + files_in+=( "$1" ) + else + printf 'File or directory not found: %s\n' "$1" + exit 1 + fi + ;; + esac + shift +done + +if [[ -z "$ref" ]]; then + printf '%s\n' "$simple_usage" + printf 'No ref provided.\n' + exit 1 +fi + +if [[ -n "$verbose" ]]; then + if [[ "${#files_in[@]}" -eq '0' ]]; then + printf 'No files provided.\n' + else + printf 'Files provided (%d):\n' "${#files_in[@]}" + printf ' %s\n' "${files_in[@]}" + fi + if [[ "${#dirs_in[@]}" -eq '0' ]]; then + printf 'No directories provided.\n' + else + printf 'Directories provided (%d):\n' "${#dirs_in[@]}" + printf ' %s\n' "${dirs_in[@]}" + fi +fi + +if [[ "$source_ref" == '--ref' ]]; then + source_ref="$ref" +fi + +if [[ ! -f "$identify_messages_awk" ]]; then + printf 'Could not find the identify-messages awk script: %s\n' "$identify_messages_awk" + stop_early='1' +fi +if [[ ! -f "$identify_endpoints_awk" ]]; then + printf 'Could not find the identify-endpoints awk script: %s\n' "$identify_endpoints_awk" + stop_early='1' +fi +if [[ ! -f "$identify_links_awk" ]]; then + printf 'Could not find the identify-links awk script: %s\n' "$identify_links_awk" + stop_early='1' +fi + +if [[ -n "$stop_early" ]]; then + exit 1 +fi + + +######################################################################################################################## +######################################## Identify files that will be updated. ######################################## +######################################################################################################################## + +link_prefix="+++ https://github.com/provenance-io/provenance/blob/$ref/" +link_rx='^\+\+\+ https://github\.com/provenance-io/provenance.*/proto/.*\.proto' +link_rx_esc="$( sed -E 's|\\|\\\\|g;' <<< "$link_rx" )" +declare files=() + +if [[ "${#files_in[@]}" -eq '0' && "${#dirs_in[@]}" -eq '0' ]]; then + dirs_in+=( '.' ) +fi + +i=0 +for file in "${files_in[@]}"; do + i=$(( i + 1 )) + [[ -n "$verbose" ]] && printf '[%d/%d]: Checking file: %s ... ' "$i" "${#files_in[@]}" "$file" + if grep -E --no-messages --binary-file=without-match --silent "$link_rx" "$file" > /dev/null 2>&1; then + files+=( "$file" ) + [[ -n "$verbose" ]] && printf 'File has links.\n' + else + if [[ -n "$verbose" ]]; then + printf 'No links found.\n' + elif [[ -z "$quiet" ]]; then + printf 'File does not have any links: %s\n' "$file" + fi + fi +done + +i=0 +for folder in "${dirs_in[@]}"; do + i=$(( i + 1 )) + [[ -n "$verbose" ]] && printf '[%d/%d]: Checking directory for files with links: %s ... ' "$i" "${#dirs_in[@]}" "$folder" + declare new_files=() + set -o noglob + IFS=$'\n' new_files+=( $( grep -E --files-with-matches --recursive --no-messages --binary-file=without-match "$link_rx" "$folder" | sort ) ) + set +o noglob + if [[ "${#new_files[@]}" -ne '0' ]]; then + [[ -n "$verbose" ]] && printf 'Found %d file(s) with links:\n' "${#new_files[@]}" + j=0 + for file in "${new_files[@]}"; do + j=$(( j + 1 )) + [[ -n "$verbose" ]] && printf '[%d/%d|%d/%d]: %s' "$i" "${#dirs_in[@]}" "$j" "${#new_files[@]}" "$file" + if [[ "$file" =~ \.md$ ]]; then + files+=( "$file" ) + [[ -n "$verbose" ]] && printf '\n' + else + [[ -n "$verbose" ]] && printf ' (ignored, not a markdown file)\n' + fi + done + else + if [[ -n "$verbose" ]]; then + printf 'None found.\n' + elif [[ -z "$quiet" ]]; then + printf 'Directory does not have any files with links: %s\n' "$folder" + fi + fi +done + +if [[ "${#files[@]}" -eq '0' ]]; then + printf 'No files found to update.\n' + exit 0 +fi + +[[ -z "$quiet" ]] && printf 'Updating links in %d file(s).\n' "${#files[@]}" +[[ -n "$verbose" ]] && printf ' %s\n' "${files[@]}" + +######################################################################################################################## +########################################### Identify proto files involved. ########################################### +######################################################################################################################## + +[[ -z "$quiet" ]] && printf 'Identifying proto files linked to from %d markdown files.\n' "${#files[@]}" + +declare protos_linked=() +i=0 +for file in "${files[@]}"; do + i=$(( i + 1 )) + [[ -n "$verbose" ]] && printf '[%d/%d]: Checking %s ... ' "$i" "${#files[@]}" "$file" + declare new_proto_files=() + set -o noglob + IFS=$'\n' new_proto_files+=( $( grep -E "$link_rx" "$file" | sed 's|^.*/proto/|proto/|; s/#.*$//;' | sort -u ) ) + set +o noglob + if [[ "${#new_proto_files[@]}" -ne '0' ]]; then + if [[ -n "$verbose" ]]; then + printf 'Found %d:\n' "${#new_proto_files[@]}" + j=0 + for new_file in "${new_proto_files[@]}"; do + j=$(( j + 1 )) + printf '[%d/%d|%d/%d]: %s\n' "$i" "${#files[@]}" "$j" "${#new_proto_files[@]}" "$new_file" + done + fi + protos_linked+=( "${new_proto_files[@]}" ) + else + [[ -n "$verbose" ]] && printf 'None found.\n' + fi +done + +[[ -n "$verbose" ]] && printf 'All linked protos (with dups) (%d):\n' "${#protos_linked[@]}" && printf ' %s\n' "${protos_linked[@]}" + +# Deduplicate entries linked from multiple files. +declare protos=() +set -o noglob +IFS=$'\n' protos+=( $( printf '%s\n' "${protos_linked[@]}" | sort -u ) ) +set +o noglob + +[[ -n "$verbose" ]] && printf 'All linked protos (no dups) (%d):\n' "${#protos[@]}" && printf ' %s\n' "${protos[@]}" + +######################################################################################################################## +##################################### Put all needed proto files in a temp dir. ###################################### +######################################################################################################################## + +[[ -z "$quiet" ]] && printf 'Getting %d proto files.\n' "${#protos[@]}" + +if [[ -z "$source_ref" ]]; then + # If there isn't a source ref, then we're copying the proto files from the local version. + # But all we'll know is the path relative to the repo root. So, below, we'll convert that + # relative path to an absolute path for the cp command so that this script can run from any + # directory in this repo. We're doing this before trying to create the temp directory so + # that we don't have to worry about the extra cleanup if this fails. + repo_root="$( git rev-parse --show-toplevel )" || exit $? +fi + +temp_dir="$( mktemp -d -t link-updates )" +[[ -n "$verbose" ]] && printf 'Created temp dir for protos: %s\n' "$temp_dir" + +# clean_exit handles any needed cleanup before exiting with the provided code. +# Usage: clean_exit [code] +clean_exit () { + local ec + ec="${1:-0}" + + if [[ -n "$temp_dir" && -d "$temp_dir" ]]; then + if [[ "$clean" == 'always' || ( "$clean" == 'ok' && "$ec" -eq '0' ) ]]; then + [[ -n "$verbose" ]] && printf 'Deleting temporary directory: %s\n' "$temp_dir" + rm -rf "$temp_dir" + temp_dir='' + else + [[ -z "$quiet" ]] && printf 'NOT deleting temporary directory: %s\n' "$temp_dir" + fi + fi + + exit "$ec" +} + +i=0 +for file in "${protos[@]}"; do + i=$(( i + 1 )) + [[ -n "$verbose" ]] && printf '[%d/%d]: Getting: %s ... ' "$i" "${#protos[@]}" "$file" + file_dir="$( dirname "$file" )" + dest_dir="${temp_dir}/${file_dir}" + if ! mkdir -p "$dest_dir"; then + printf 'ERROR: Command failed: mkdir -p "%s"\n' "$dest_dir" + clean_exit 1 + fi + + if [[ -n "$source_ref" ]]; then + dest_file="${temp_dir}/${file}" + header_file="$dest_file.header" + url="https://raw.githubusercontent.com/provenance-io/provenance/${source_ref}/$file" + [[ -n "$verbose" ]] && printf 'From url: %s\n' "$url" + curl --silent -o "$dest_file" --dump-header "$header_file" "$url" + if ! head -n 1 "$header_file" | grep -q '200[[:space:]]*$' > /dev/null 2>&1; then + printf 'ERROR: Source file not found: %s\n' "$url" + stop_early='YES' + fi + else + # We know the path relative to the repo's root, convert it to an absolute path. + # Otherwise, this script would only work if run from the repo's root. + source_file="${repo_root}/${file}" + [[ -n "$verbose" ]] && printf 'From file: %s\n' "$source_file" + if ! cp "$source_file" "$dest_dir"; then + printf 'ERROR: Command failed: cp "%s" "%s"\n' "$source_file" "$dest_dir" + stop_early='YES' + fi + fi +done + +if [[ -n "$stop_early" ]]; then + clean_exit 1 +fi + +######################################################################################################################## +##################################### Identify Line Numbers in the Proto Files. ###################################### +######################################################################################################################## + +[[ -z "$quiet" ]] && printf 'Identifying line numbers for messages in the proto files.\n' + +# Get a count of all the lines in a file. +# Usage: get_line_count +# or | get_line_count +# Note: A newline is added automatically when using a heredoc. +# So get_line_count <<< '' will return 1 instead of the expected 0. +get_line_count () { + # Not using wc because it won't count a line if there's no ending newline. + awk 'END { print FNR; }' "$@" +} + +# Each line of the message summary file is expected to have this format: +# ;=#L-L +message_summary_file="${temp_dir}/message-summary.txt" +[[ -n "$verbose" ]] && printf 'Creating summary of all messages and enums: %s\n' "$message_summary_file" +find "$temp_dir" -type f -name '*.proto' -print0 | xargs -0 awk -f "$identify_messages_awk" >> "$message_summary_file" || clean_exit $? +[[ -n "$verbose" ]] && printf 'Found %d messages/enums in the proto files.\n' "$( get_line_count "$message_summary_file" )" + +######################################################################################################################## +####################################### Identify Endpoints in the Proto Files. ####################################### +######################################################################################################################## + +[[ -z "$quiet" ]] && printf 'Identifying endpoint messages in the proto files.\n' + +# Each line of the endpoint summary file is expected to have this format: +# rpc::(Request|Response):;= +endpoint_summary_file="${temp_dir}/endpoint-summary.txt" +[[ -n "$verbose" ]] && printf 'Creating summary of all endpoint messages: %s\n' "$endpoint_summary_file" +find "$temp_dir" -type f -name '*.proto' -print0 | xargs -0 awk -f "$identify_endpoints_awk" >> "$endpoint_summary_file" || clean_exit $? +[[ -n "$verbose" ]] && printf 'Found %d endpoint messages in the proto files.\n' "$( get_line_count "$endpoint_summary_file" )" + +######################################################################################################################## +################################# Identify Links and Content in the Markdown Files. ################################## +######################################################################################################################## + +[[ -z "$quiet" ]] && printf 'Identifying proto links and their content in %d markdown files.\n' "${#files[@]}" + +# This is done in three steps: +# 1. Process the markdown files and identify all links and their content. +# 2. Convert all endpoint entries into message entries. +# 3. Identify the correct line numbers, and create the updated links. +# +# At each step, it's possible for new errors to be introduced. +# However, each step will pass previous errors along, and errors will only be looked for after the third step. +# This way, if there are errors, we get more of them all at once instead of having to fix a bunch before finding +# out if there are more. The fix for these errors will usually involve updating the proto files. + +# First step: Process the markdown files and identify all links and their content. +# The lines in the initial link info file are expected to each have one of the following formats: +# :;= +# :;rpc::(Request|Response): +# :;ERROR: : + +link_info_file="${temp_dir}/1-link-info.txt" +[[ -n "$verbose" ]] && printf 'Identifying link content in %d files: %s\n' "${#files[@]}" "$link_info_file" +i=0 +for file in "${files[@]}"; do + i=$(( i + 1 )) + [[ -n "$verbose" ]] && printf '[1:%d/%d]: Processing: %s\n' "$i" "${#files[@]}" "$file" + awk -v LinkRx="$link_rx_esc" -f "$identify_links_awk" "$file" >> "$link_info_file" || clean_exit $? +done + +rpc_count="$( grep ';rpc:' "$link_info_file" | get_line_count )" +if [[ -n "$verbose" ]]; then + printf 'Found %d links in %d files.\n' "$( get_line_count "$link_info_file" )" "${#files[@]}" + printf 'Identified the message name for %d links.\n' "$( grep -F '=' "$link_info_file" | get_line_count )" + printf 'Identified the endpoint and type for %d links.\n' "$rpc_count" + printf 'Found %d problems.\n' "$( grep -F ';ERROR' "$link_info_file" | get_line_count )" +fi + +# Second step: Convert all endpoint entries into message entries. +# Basically, change all of the rpc lines with the format: +# :;rpc::(Request|Response): +# To a message line with the format: +# :;= +# Lines with other formats are passed forward untouched. + +link_message_info_file="${temp_dir}/2-link-message-info.txt" +[[ -n "$verbose" ]] && printf 'Identifying message name for %d links: %s\n' "$rpc_count" "$link_message_info_file" + +i=0 +while IFS="" read -r line || [[ -n "$line" ]]; do + if [[ ! "$line" =~ ';rpc:' ]]; then + # Not an rpc-lookup line, just pass it on. + printf '%s\n' "$line" >> "$link_message_info_file" + continue + fi + + i=$(( i + 1 )) + [[ -n "$verbose" ]] && printf '[2:%d/%d]: Processing: %s\n' "$i" "$rpc_count" "$line" + # The line has this format: + # :;rpc::(Request|Response): + # Split the line into: + # The lead: : + # And the endpoint lookup string: rpc::(Request|Response): + lead="$( sed -E 's/;.*$//' <<< "$line" )" + [[ -n "$verbose" ]] && printf '[2:%d/%d]: lead: %s\n' "$i" "$rpc_count" "$lead" + to_find="$( sed -E 's/^[^;]*;//' <<< "$line" )" + [[ -n "$verbose" ]] && printf '[2:%d/%d]: to_find: %s\n' "$i" "$rpc_count" "$to_find" + if [[ -z "$lead" || -z "$to_find" || "$lead" == "$to_find" ]]; then + [[ -n "$verbose" ]] && printf '[2:%d/%d]: Result: Error: Could not split lead and to_find.\n' "$i" "$ok_count" + printf '%s;ERROR: could not parse as endpoint lookup line\n' "$line" >> "$link_message_info_file" + continue + fi + + # Look for a line in the endpoint_summary_file that starts with to_find followed by a semi-colon. + # The endpoint_summary_file lines have this format: + # rpc::(Request|Response):;= + found_lines="$( grep -F "${to_find};" "$endpoint_summary_file" )" + found_lines_count="$( get_line_count <<< "$found_lines" )" + [[ -z "$found_lines" || "$found_lines" =~ ^[[:space:]]*$ ]] && found_lines_count='0' + [[ -n "$verbose" ]] && printf '[2:%d/%d]: found_lines (%d): %q\n' "$i" "$rpc_count" "$found_lines_count" "$found_lines" + + if [[ "$found_lines_count" -eq '1' ]]; then + # Extract the combined message and file from what we found: = + message="$( sed -E 's/^[^;]+;//' <<< "$found_lines" )" + [[ -n "$verbose" ]] && printf '[2:%d/%d]: message: %s\n' "$i" "$rpc_count" "$message" + if [[ -n "$message" && "$message" != "$found_lines" ]]; then + [[ -n "$verbose" ]] && printf '[2:%d/%d]: Result: Success: Message identified.\n' "$i" "$rpc_count" + printf '%s;%s\n' "$lead" "$message" >> "$link_message_info_file" + else + [[ -n "$verbose" ]] && printf '[2:%d/%d]: Result: Error: Could not parse [%s].\n' "$i" "$rpc_count" "$found_lines" + printf '%s;ERROR: could not parse message from %s for %s\n' "$lead" "$found_lines" "$to_find" >> "$link_message_info_file" + fi + elif [[ "$found_lines_count" -eq '0' ]]; then + [[ -n "$verbose" ]] && printf '[2:%d/%d]: Result: Error: Not found.\n' "$i" "$rpc_count" + # If you get this error, check that the section has the correct endpoint name and not the name of a message. + printf '%s;ERROR: could not find endpoint message: %s\n' "$lead" "$to_find" >> "$link_message_info_file" + else + [[ -n "$verbose" ]] && printf '[2:%d/%d]: Result: Error: Multiple messages identified.\n' "$i" "$rpc_count" + printf '%s;ERROR: found %d endpoint messages: %s\n' "$lead" "$found_lines_count" "$to_find" >> "$link_message_info_file" + fi +done < "$link_info_file" + +link_count="$( get_line_count "$link_message_info_file" )" +problem_count="$( grep -F ';ERROR' "$link_message_info_file" | get_line_count )" +if [[ -n "$verbose" ]]; then + printf 'Found %d links in %d files.\n' "$link_count" "${#files[@]}" + printf 'Found the message name for %d links.\n' "$( grep '=' "$link_message_info_file" | get_line_count )" + printf 'Found %d problems.\n' "$problem_count" +fi + +# Third step: Identify the correct line numbers, and create the updated links. +# Basically convert all of these lines: +# :;= +# into this format: +# :; +# where has this format: +# +++ #L-L +# Lines with other formats are passed forward untouched. + +ok_count=$(( link_count - problem_count )) +new_links_file="${temp_dir}/3-new-links.txt" +[[ -n "$verbose" ]] && printf 'Creating %d new links: %s\n' "$ok_count" "$new_links_file" + +i=0 +while IFS="" read -r line || [[ -n "$line" ]]; do + if [[ "$line" =~ ';ERROR' ]]; then + # Pass on previous errors. + printf '%s\n' "$line" >> "$new_links_file" + continue + fi + + i=$(( i + 1 )) + [[ -n "$verbose" ]] && printf '[3:%d/%d]: Processing: %s\n' "$i" "$ok_count" "$line" + + # All lines here should have this format: + # :;= + # Split the line into: + # The lead: : + # The message and file to find: = + lead="$( sed -E 's/;.*$//' <<< "$line" )" + [[ -n "$verbose" ]] && printf '[3:%d/%d]: lead: %s\n' "$i" "$ok_count" "$lead" + to_find="$( sed -E 's/^[^;]+;//' <<< "$line" )" + [[ -n "$verbose" ]] && printf '[3:%d/%d]: to_find: %s\n' "$i" "$ok_count" "$to_find" + if [[ -z "$lead" || -z "$to_find" || "$lead" == "$to_find" ]]; then + [[ -n "$verbose" ]] && printf '[3:%d/%d]: Result: Error: Could not split lead and to_find.\n' "$i" "$ok_count" + printf '%s;ERROR: could not parse as link info line\n' "$line" >> "$new_links_file" + continue + fi + + # Lines in the message_summary_file have this format: + # ;=#L-L + # And in the "$to_find" variable, we have this format: + # = + # The ; is used so that I have specific characters bounding the . + # This lets me provide "$to_find" to grep with the -F flag while only matching on + # the exact , without also matching other message names that have this one as a prefix. + # E.g. "Order=proto/..." needs to not also match "AskOrder=proto/...". + # Without the ;, I'd have to omit the -F flag, escape stuff in "$to_find" and add a ^ to the front of the regex. + # But I like to avoid such escaping if possible, so I went with the ; route in here. + # The # is needed in the link anyway, but also provides a handy ending bound on "$to_find". + + found_lines="$( grep -F ";${to_find}#" "$message_summary_file" )" + found_lines_count="$( get_line_count <<< "$found_lines" )" + [[ -z "$found_lines" || "$found_lines" =~ ^[[:space:]]*$ ]] && found_lines_count='0' + [[ -n "$verbose" ]] && printf '[3:%d/%d]: found_lines (%d): %q\n' "$i" "$ok_count" "$found_lines_count" "$found_lines" + + if [[ "$found_lines_count" -eq '1' ]]; then + # A found line will have this format: ;=#L-L + # Extract the relative link: #L-L + relative_link="$( sed -E 's/^[^=]+=//' <<< "$found_lines" )" + [[ -n "$verbose" ]] && printf '[3:%d/%d]: relative_link: %s\n' "$i" "$ok_count" "$relative_link" + if [[ -n "$relative_link" && "$found_lines" != "$relative_link" ]]; then + [[ -n "$verbose" ]] && printf '[3:%d/%d]: Result: Success: New link created.\n' "$i" "$ok_count" + printf '%s;%s\n' "$lead" "${link_prefix}${relative_link}" >> "$new_links_file" + else + [[ -n "$verbose" ]] && printf '[3:%d/%d]: Result: Error: Could not parse [%s].\n' "$i" "$ok_count" "$found_lines" + printf '%s;ERROR: could not parse relative link for %s from %s\n' "$lead" "$to_find" "$found_lines" >> "$new_links_file" + fi + elif [[ "$found_lines_count" -eq '0' ]]; then + [[ -n "$verbose" ]] && printf '[3:%d/%d]: Result: Error: Not found.\n' "$i" "$ok_count" + # If you get this error, the here probably does not exist. You'll either want to update the + # section header that the link is in, or else add a link comment. + printf '%s;ERROR: could not find message line numbers: %s\n' "$lead" "$to_find" >> "$new_links_file" + else + [[ -n "$verbose" ]] && printf '[3:%d/%d]: Result: Error: Multiple message line number entries identified.\n' "$i" "$ok_count" + printf '%s;ERROR: found %d message line number entries: %s\n' "$lead" "$found_lines_count" "$to_find" >> "$new_links_file" + fi +done < "$link_message_info_file" + +# At this point, all of the lines should have one of these formats: +# :; +# :;ERROR + +link_count="$( get_line_count "$new_links_file" )" +ok_count="$( grep -E ';\+\+\+ ' "$new_links_file" | get_line_count )" +problem_count="$( grep -F ';ERROR' "$new_links_file" | get_line_count )" +if [[ -n "$verbose" ]]; then + printf 'Found %d links in %d files.\n' "$link_count" "${#files[@]}" + printf 'Created %d updated links.\n' "$ok_count" + printf 'Found %d problems.\n' "$problem_count" +fi + +# Finally, if there are any errors, stop and output them. +problem_count="$( grep ';ERROR' "$new_links_file" | get_line_count )" +[[ -n "$verbose" ]] && printf 'Checking for link identification errors: %s\n' "$new_links_file" +if [[ "$problem_count" -ne '0' ]]; then + printf 'Found %d problematic links in the markdown files.\n' "$problem_count" + grep -F ';ERROR' "$new_links_file" + clean_exit 1 +fi + +# Also make sure that every line in new_links_file is an updated link line. +if [[ "$link_count" -ne "$ok_count" ]]; then + printf 'Could not create new links (%d) for every current link (%d).\n' "$ok_count" "$link_count" + grep -Ev ';\+\+\+ ' "$new_links_file" + clean_exit 1 +fi + +# Finally, all lines should now have this format: +# :; + +######################################################################################################################## +############################################# Update the markdown files. ############################################# +######################################################################################################################## + +[[ -z "$quiet" ]] && printf 'Updating %d links in %d files.\n' "$link_count" "${#files[@]}" + +tfile="$temp_dir/temp.md" +problems=0 +ec=0 +i=0 +while IFS="" read -r line || [[ -n "$line" ]]; do + i=$(( i + 1 )) + [[ -n "$verbose" ]] && printf '[%d/%d]: Applying update: %s\n' "$i" "$link_count" "$line" + + # Each line should have this format: + # :; + md_file="$( sed -E 's/^([^:]+):.+$/\1/' <<< "$line" )" + [[ -n "$verbose" ]] && printf '[%d/%d]: md_file: %s\n' "$i" "$link_count" "$md_file" + line_number="$( sed -E 's/^[^:]+:([[:digit:]]+);.+$/\1/' <<< "$line" )" + [[ -n "$verbose" ]] && printf '[%d/%d]: line_number: %s\n' "$i" "$link_count" "$line_number" + new_link="$( sed -E 's/^[^:]+:[[:digit:]]+;//' <<< "$line" )" + [[ -n "$verbose" ]] && printf '[%d/%d]: new_link: %s\n' "$i" "$link_count" "$new_link" + + if [[ -z "$md_file" || -z "$line_number" || -z "$new_link" || "$md_file" == "$line" || "$line_number" == "$line" || "$new_link" == "$line" || "${md_file}:${line_number};${new_link}" != "$line" ]]; then + printf '[%d/%d]: ERROR: Could not parse new link line: %s\n' "$i" "$link_count" "$line" + problems=$(( problems + 1 )) + continue + fi + + # This sed command uses a line number to identify which line to update, and the c directive to + # replace the entire line with new content. It's a little clunky because it insists that the c + # is followed by a \ and then the new content must all be on its own line. And it has to end in a + # newline because sed doesn't automatically include that in the replacement; i.e., without it, + # the line below gets appended to the new content and the file ultimately has one less line. + # The ending newline can't be included in the printf because "$( )" might strip it. + if ! sed "$( printf '%d c\\\n%s' "$line_number" "$new_link" )"$'\n' "$md_file" > "$tfile"; then + printf '[%d/%d]: ERROR: Command failed: sed to update line %d in %s with new link: %s\n' "$i" "$link_count" "$line_number" "$md_file" "$new_link" + problems=$(( problems + 1 )) + continue + fi + + if ! mv "$tfile" "$md_file"; then + printf '[%d/%d]: ERROR: Command failed: mv "%s" "%s"\n' "$i" "$link_count" "$tfile" "$md_file" + problems=$(( problems + 1 )) + continue + fi + + [[ -n "$verbose" ]] && printf '[%d/%d]: Success.\n' "$i" "$link_count" +done < "$new_links_file" + +if [[ "$problems" -ne '0' ]]; then + printf 'Failed to update %d links.\n' "$problems" + clean_exit 1 +fi + +[[ -z "$quiet" ]] && printf 'Done.\n' +clean_exit 0 diff --git a/x/exchange/spec/02_state.md b/x/exchange/spec/02_state.md index 258d5d2cbd..fe61cc8c34 100644 --- a/x/exchange/spec/02_state.md +++ b/x/exchange/spec/02_state.md @@ -220,7 +220,7 @@ Commitment Settlement Bips is stored as a uint16. Each market has an associated `MarketAccount` with an address derived from the `market_id`. Each `MarketAccount` is stored using the `Accounts` module. -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/market.proto#L14-L26 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/market.proto#L14-L26 ### Market Details diff --git a/x/exchange/spec/03_messages.md b/x/exchange/spec/03_messages.md index bf3cb513c3..f892b40d3a 100644 --- a/x/exchange/spec/03_messages.md +++ b/x/exchange/spec/03_messages.md @@ -65,15 +65,15 @@ It is expected to fail if: #### MsgCreateAskRequest -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/tx.proto#L116-L124 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/tx.proto#L125-L133 #### AskOrder -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/orders.proto#L28-L53 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/orders.proto#L30-L56 #### MsgCreateAskResponse -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/tx.proto#L126-L130 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/tx.proto#L135-L139 ### CreateBid @@ -98,15 +98,15 @@ It is expected to fail if: #### MsgCreateBidRequest -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/tx.proto#L132-L140 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/tx.proto#L141-L149 #### BidOrder -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/orders.proto#L55-L78 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/orders.proto#L58-L86 #### MsgCreateBidResponse -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/tx.proto#L142-L146 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/tx.proto#L151-L155 ### CommitFunds @@ -123,11 +123,11 @@ It is expected to fail if: #### MsgCommitFundsRequest -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/tx.proto#L148-L163 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/tx.proto#L157-L176 #### MsgCommitFundsResponse -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/tx.proto#L165-L166 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/tx.proto#L178-L179 ### CancelOrder @@ -149,11 +149,11 @@ It is expected to fail if: #### MsgCancelOrderRequest -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/tx.proto#L168-L178 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/tx.proto#L181-L191 #### MsgCancelOrderResponse -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/tx.proto#L180-L181 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/tx.proto#L193-L194 ### FillBids @@ -180,11 +180,11 @@ It is expected to fail if: #### MsgFillBidsRequest -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/tx.proto#L183-L203 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/tx.proto#L196-L220 #### MsgFillBidsResponse -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/tx.proto#L205-L206 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/tx.proto#L222-L223 ### FillAsks @@ -211,11 +211,11 @@ It is expected to fail if: #### MsgFillAsksRequest -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/tx.proto#L208-L229 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/tx.proto#L225-L250 #### MsgFillAsksResponse -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/tx.proto#L231-L232 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/tx.proto#L252-L253 ## Market Endpoints @@ -250,11 +250,11 @@ It is expected to fail if: #### MsgMarketSettleRequest -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/tx.proto#L234-L251 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/tx.proto#L255-L272 #### MsgMarketSettleResponse -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/tx.proto#L253-L254 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/tx.proto#L274-L275 ### MarketCommitmentSettle @@ -271,11 +271,11 @@ It is expected to fail if: #### MsgMarketCommitmentSettleRequest -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/tx.proto#L256-L276 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/tx.proto#L277-L297 #### MsgMarketCommitmentSettleResponse -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/tx.proto#L278-L279 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/tx.proto#L299-L300 ### MarketReleaseCommitments @@ -292,11 +292,11 @@ It is expected to fail if: #### MsgMarketReleaseCommitmentsRequest -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/tx.proto#L281-L294 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/tx.proto#L302-L315 #### MsgMarketReleaseCommitmentsResponse -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/tx.proto#L296-L297 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/tx.proto#L317-L318 ### MarketSetOrderExternalID @@ -318,11 +318,11 @@ It is expected to fail if: #### MsgMarketSetOrderExternalIDRequest -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/tx.proto#L299-L313 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/tx.proto#L320-L334 #### MsgMarketSetOrderExternalIDResponse -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/tx.proto#L315-L316 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/tx.proto#L336-L337 ### MarketWithdraw @@ -339,11 +339,11 @@ It is expected to fail if: #### MsgMarketWithdrawRequest -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/tx.proto#L318-L332 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/tx.proto#L339-L357 #### MsgMarketWithdrawResponse -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/tx.proto#L334-L335 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/tx.proto#L359-L360 ### MarketUpdateDetails @@ -358,13 +358,13 @@ It is expected to fail if: #### MsgMarketUpdateDetailsRequest -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/tx.proto#L337-L348 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/tx.proto#L362-L373 See also: [MarketDetails](#marketdetails). #### MsgMarketUpdateDetailsResponse -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/tx.proto#L350-L351 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/tx.proto#L375-L376 ### MarketUpdateAcceptingOrders @@ -381,11 +381,11 @@ It is expected to fail if: #### MsgMarketUpdateAcceptingOrdersRequest -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/tx.proto#L377-L388 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/tx.proto#L402-L413 #### MsgMarketUpdateAcceptingOrdersResponse -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/tx.proto#L390-L391 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/tx.proto#L415-L416 ### MarketUpdateUserSettle @@ -403,11 +403,11 @@ It is expected to fail if: #### MsgMarketUpdateUserSettleRequest -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/tx.proto#L393-L406 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/tx.proto#L418-L431 #### MsgMarketUpdateUserSettleResponse -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/tx.proto#L408-L409 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/tx.proto#L433-L434 ### MarketUpdateAcceptingCommitments @@ -426,11 +426,11 @@ It is expected to fail if: #### MsgMarketUpdateAcceptingCommitmentsRequest -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/tx.proto#L411-L424 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/tx.proto#L436-L449 #### MsgMarketUpdateAcceptingCommitmentsResponse -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/tx.proto#L426-L427 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/tx.proto#L451-L452 ### MarketUpdateIntermediaryDenom @@ -445,11 +445,11 @@ It is expected to fail if: #### MsgMarketUpdateIntermediaryDenomRequest -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/tx.proto#L429-L440 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/tx.proto#L454-L465 #### MsgMarketUpdateIntermediaryDenomResponse -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/tx.proto#L442-L443 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/tx.proto#L467-L468 ### MarketManagePermissions @@ -466,13 +466,13 @@ It is expected to fail if: #### MsgMarketManagePermissionsRequest -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/tx.proto#L445-L460 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/tx.proto#L470-L485 See also: [AccessGrant](#accessgrant) and [Permission](#permission). #### MsgMarketManagePermissionsResponse -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/tx.proto#L462-L463 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/tx.proto#L487-L488 ### MarketManageReqAttrs @@ -490,11 +490,11 @@ It is expected to fail if: #### MsgMarketManageReqAttrsRequest -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/tx.proto#L465-L486 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/tx.proto#L490-L511 #### MsgMarketManageReqAttrsResponse -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/tx.proto#L488-L489 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/tx.proto#L513-L514 ## Payment Endpoints @@ -527,15 +527,15 @@ It is expected to fail if: #### MsgCreatePaymentRequest -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/tx.proto#L491-L497 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/tx.proto#L516-L523 #### Payment -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/payments.proto#L13-L43 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/payments.proto#L14-L52 #### MsgCreatePaymentResponse -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/tx.proto#L499-L500 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/tx.proto#L525-L526 ### AcceptPayment @@ -554,13 +554,13 @@ It is expected to fail if: #### MsgAcceptPaymentRequest -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/tx.proto#L502-L508 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/tx.proto#L528-L535 See also: [Payment](#payment). #### MsgAcceptPaymentResponse -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/tx.proto#L510-L511 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/tx.proto#L537-L538 ### RejectPayment @@ -575,11 +575,11 @@ It is expected to fail if: #### MsgRejectPaymentRequest -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/tx.proto#L513-L523 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/tx.proto#L540-L550 #### MsgRejectPaymentResponse -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/tx.proto#L525-L526 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/tx.proto#L552-L553 ### RejectPayments @@ -594,11 +594,11 @@ It is expected to fail if: #### MsgRejectPaymentsRequest -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/tx.proto#L528-L536 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/tx.proto#L555-L563 #### MsgRejectPaymentsResponse -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/tx.proto#L538-L539 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/tx.proto#L565-L566 ### CancelPayments @@ -613,11 +613,11 @@ It is expected to fail if: #### MsgCancelPaymentsRequest -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/tx.proto#L541-L549 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/tx.proto#L568-L576 #### MsgCancelPaymentsResponse -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/tx.proto#L551-L552 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/tx.proto#L578-L579 ### ChangePaymentTarget @@ -637,11 +637,11 @@ It is expected to fail if: #### MsgChangePaymentTargetRequest -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/tx.proto#L554-L564 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/tx.proto#L581-L591 #### MsgChangePaymentTargetResponse -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/tx.proto#L566-L567 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/tx.proto#L593-L594 ## Governance Proposals @@ -667,15 +667,15 @@ It is expected to fail if: #### MsgGovCreateMarketRequest -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/tx.proto#L569-L580 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/tx.proto#L596-L607 #### Market -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/market.proto#L52-L148 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/market.proto#L52-L148 #### MarketDetails -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/market.proto#L28-L40 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/market.proto#L28-L40 * The `name` is limited to 250 characters max. * The `description` is limited to 2000 characters max. @@ -684,19 +684,19 @@ It is expected to fail if: #### FeeRatio -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/market.proto#L150-L158 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/market.proto#L150-L158 #### AccessGrant -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/market.proto#L160-L166 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/market.proto#L160-L166 #### Permission -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/market.proto#L168-L186 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/market.proto#L168-L186 #### MsgGovCreateMarketResponse -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/tx.proto#L582-L583 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/tx.proto#L609-L610 ### GovManageFees @@ -710,13 +710,13 @@ It is expected to fail if: #### MsgGovManageFeesRequest -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/tx.proto#L585-L635 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/tx.proto#L612-L662 See also: [FeeRatio](#feeratio). #### MsgGovManageFeesResponse -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/tx.proto#L637-L638 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/tx.proto#L664-L665 ### GovCloseMarket @@ -730,11 +730,11 @@ It is expected to fail if: #### MsgGovCloseMarketRequest -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/tx.proto#L640-L648 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/tx.proto#L667-L675 #### MsgGovCloseMarketResponse -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/tx.proto#L650-L651 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/tx.proto#L677-L678 ### UpdateParams @@ -746,10 +746,10 @@ It is expected to fail if: #### MsgUpdateParamsRequest -+++ https://github.com/provenance-io/provenance/blob/bd2f1ac4396c72970dd40d40e388dcbb1dd98250/proto/provenance/exchange/v1/tx.proto#L697-L706 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/tx.proto#L699-L708 See also: [Params](06_params.md#params). #### MsgUpdateParamsResponse -+++ https://github.com/provenance-io/provenance/blob/bd2f1ac4396c72970dd40d40e388dcbb1dd98250/proto/provenance/exchange/v1/tx.proto#L708-L709 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/tx.proto#L710-L711 diff --git a/x/exchange/spec/05_queries.md b/x/exchange/spec/05_queries.md index c3a93db6b5..d448ca6e78 100644 --- a/x/exchange/spec/05_queries.md +++ b/x/exchange/spec/05_queries.md @@ -48,13 +48,13 @@ Then choose one entry from each of `settlement_flat_fee_options` and `settlement ### QueryOrderFeeCalcRequest -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/query.proto#L156-L163 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/query.proto#L157-L164 See also: [AskOrder](03_messages.md#askorder), and [BidOrder](03_messages.md#bidorder). ### QueryOrderFeeCalcResponse -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/query.proto#L165-L184 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/query.proto#L166-L185 ## GetOrder @@ -63,15 +63,15 @@ Use the `GetOrder` query to look up an order by its id. ### QueryGetOrderRequest -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/query.proto#L186-L190 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/query.proto#L187-L191 ### QueryGetOrderResponse -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/query.proto#L192-L196 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/query.proto#L193-L197 ### Order -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/orders.proto#L13-L26 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/orders.proto#L15-L28 See also: [AskOrder](03_messages.md#askorder), and [BidOrder](03_messages.md#bidorder). @@ -82,11 +82,11 @@ Orders with external ids can be looked up using the `GetOrderByExternalID` query ### QueryGetOrderByExternalIDRequest -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/query.proto#L198-L204 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/query.proto#L199-L205 ### QueryGetOrderByExternalIDResponse -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/query.proto#L206-L210 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/query.proto#L207-L211 See also: [Order](#order). @@ -100,11 +100,11 @@ This query is paginated. ### QueryGetMarketOrdersRequest -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/query.proto#L212-L223 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/query.proto#L213-L224 ### QueryGetMarketOrdersResponse -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/query.proto#L225-L232 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/query.proto#L226-L233 See also: [Order](#order). @@ -118,11 +118,11 @@ This query is paginated. ### QueryGetOwnerOrdersRequest -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/query.proto#L234-L245 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/query.proto#L235-L246 ### QueryGetOwnerOrdersResponse -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/query.proto#L247-L254 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/query.proto#L248-L255 See also: [Order](#order). @@ -136,11 +136,11 @@ This query is paginated. ### QueryGetAssetOrdersRequest -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/query.proto#L256-L267 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/query.proto#L257-L268 ### QueryGetAssetOrdersResponse -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/query.proto#L269-L276 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/query.proto#L270-L277 See also: [Order](#order). @@ -153,11 +153,11 @@ This query is paginated. ### QueryGetAllOrdersRequest -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/query.proto#L278-L282 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/query.proto#L279-L283 ### QueryGetAllOrdersResponse -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/query.proto#L284-L291 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/query.proto#L285-L292 See also: [Order](#order). @@ -168,11 +168,11 @@ To find out how much an account has committed to a market, use the `GetCommitmen ### QueryGetCommitmentRequest -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/query.proto#L293-L299 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/query.proto#L294-L300 ### QueryGetCommitmentResponse -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/query.proto#L301-L306 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/query.proto#L302-L311 ## GetAccountCommitments @@ -181,11 +181,11 @@ To look up the amounts an account has committed to any market, use the `GetAccou ### QueryGetAccountCommitmentsRequest -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/query.proto#L308-L312 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/query.proto#L313-L317 ### QueryGetAccountCommitmentsResponse -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/query.proto#L314-L318 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/query.proto#L319-L323 ## GetMarketCommitments @@ -194,11 +194,11 @@ To get the amounts committed to a market by any account, use the `GetMarketCommi ### QueryGetMarketCommitmentsRequest -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/query.proto#L320-L327 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/query.proto#L325-L332 ### QueryGetMarketCommitmentsResponse -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/query.proto#L329-L336 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/query.proto#L334-L341 ## GetAllCommitments @@ -207,11 +207,11 @@ To get all funds committed by any account to any market, use the `GetAllCommitme ### QueryGetAllCommitmentsRequest -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/query.proto#L338-L342 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/query.proto#L343-L347 ### QueryGetAllCommitmentsResponse -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/query.proto#L344-L351 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/query.proto#L349-L356 ## GetMarket @@ -220,11 +220,11 @@ All the information and setup for a market can be looked up using the `GetMarket ### QueryGetMarketRequest -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/query.proto#L353-L357 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/query.proto#L358-L362 ### QueryGetMarketResponse -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/query.proto#L359-L365 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/query.proto#L364-L370 See also: [Market](03_messages.md#market). @@ -235,15 +235,15 @@ Use the `GetAllMarkets` query to get brief information about all markets. ### QueryGetAllMarketsRequest -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/query.proto#L367-L371 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/query.proto#L372-L376 ### QueryGetAllMarketsResponse -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/query.proto#L373-L380 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/query.proto#L378-L385 ### MarketBrief -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/market.proto#L42-L50 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/market.proto#L42-L50 ## Params @@ -252,11 +252,11 @@ The exchange module params can be looked up using the `Params` query. ### QueryParamsRequest -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/query.proto#L382-L383 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/query.proto#L387-L388 ### QueryParamsResponse -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/query.proto#L385-L389 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/query.proto#L390-L394 See also: [Params](06_params.md#params). @@ -267,13 +267,13 @@ To find out the additional tx fee required for a commitment settlement, use the ### QueryCommitmentSettlementFeeCalcRequest -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/query.proto#L391-L401 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/query.proto#L396-L406 See also: [MsgMarketCommitmentSettleRequest](03_messages.md#msgmarketcommitmentsettlerequest). ### QueryCommitmentSettlementFeeCalcResponse -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/query.proto#L403-L418 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/query.proto#L408-L435 ## ValidateCreateMarket @@ -288,13 +288,13 @@ If the result has: ### QueryValidateCreateMarketRequest -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/query.proto#L420-L424 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/query.proto#L437-L441 See also: [MsgGovCreateMarketRequest](03_messages.md#msggovcreatemarketrequest). ### QueryValidateCreateMarketResponse -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/query.proto#L426-L436 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/query.proto#L443-L453 ## ValidateMarket @@ -305,11 +305,11 @@ Any problems detected will be returned in the `error` field. ### QueryValidateMarketRequest -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/query.proto#L438-L442 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/query.proto#L455-L459 ### QueryValidateMarketResponse -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/query.proto#L444-L448 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/query.proto#L461-L465 ## ValidateManageFees @@ -324,13 +324,13 @@ If the result has: ### QueryValidateManageFeesRequest -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/query.proto#L450-L454 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/query.proto#L467-L471 See also: [MsgGovManageFeesRequest](03_messages.md#msggovmanagefeesrequest). ### QueryValidateManageFeesResponse -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/query.proto#L456-L466 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/query.proto#L473-L483 ## GetPayment @@ -339,11 +339,11 @@ Use the `GetPayment` query to look up a payment by `source` and `external_id`. ### QueryGetPaymentRequest -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/query.proto#L468-L474 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/query.proto#L485-L491 ### QueryGetPaymentResponse -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/query.proto#L476-L480 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/query.proto#L493-L497 See also: [Payment](03_messages.md#payment). @@ -356,11 +356,11 @@ This query is paginated. ### QueryGetPaymentsWithSourceRequest -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/query.proto#L482-L489 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/query.proto#L499-L506 ### QueryGetPaymentsWithSourceResponse -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/query.proto#L491-L498 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/query.proto#L508-L515 See also: [Payment](03_messages.md#payment). @@ -373,11 +373,11 @@ This query is paginated. ### QueryGetPaymentsWithTargetRequest -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/query.proto#L500-L507 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/query.proto#L517-L524 ### QueryGetPaymentsWithTargetResponse -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/query.proto#L509-L516 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/query.proto#L526-L533 See also: [Payment](03_messages.md#payment). @@ -390,11 +390,11 @@ This query is paginated. ### QueryGetAllPaymentsRequest -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/query.proto#L518-L522 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/query.proto#L535-L539 ### QueryGetAllPaymentsResponse -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/query.proto#L524-L531 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/query.proto#L541-L548 See also: [Payment](03_messages.md#payment). @@ -405,10 +405,10 @@ The `PaymentFeeCalc` query can be used to calculate the fees for creating or acc ### QueryPaymentFeeCalcRequest -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/query.proto#L533-L537 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/query.proto#L550-L554 See also: [Payment](03_messages.md#payment). ### QueryPaymentFeeCalcResponse -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/query.proto#L539-L547 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/query.proto#L556-L572 diff --git a/x/exchange/spec/06_params.md b/x/exchange/spec/06_params.md index 6bc2b2b42e..c5b93443c5 100644 --- a/x/exchange/spec/06_params.md +++ b/x/exchange/spec/06_params.md @@ -23,8 +23,8 @@ See also: [Exchange Fees](01_concepts.md#exchange-fees). ## Params -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/params.proto#L12-L28 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/params.proto#L13-L31 ## DenomSplit -+++ https://github.com/provenance-io/provenance/blob/v1.18.0/proto/provenance/exchange/v1/params.proto#L30-L37 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/exchange/v1/params.proto#L33-L40 diff --git a/x/hold/spec/04_queries.md b/x/hold/spec/04_queries.md index a50e37ed23..a69e971f53 100644 --- a/x/hold/spec/04_queries.md +++ b/x/hold/spec/04_queries.md @@ -13,11 +13,11 @@ The query takes in an `address` and returns a coins `amount`. Request: -+++ https://github.com/provenance-io/provenance/blob/dwedul/1607-in-place-escrow/proto/provenance/hold/v1/query.proto#L28-L35 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/hold/v1/query.proto#L28-L35 Response: -+++ https://github.com/provenance-io/provenance/blob/dwedul/1607-in-place-escrow/proto/provenance/hold/v1/query.proto#L37-L45 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/hold/v1/query.proto#L37-L49 It is expected to fail if the `address` is invalid or missing. @@ -30,12 +30,14 @@ The query takes in pagination parameters and returns a list of `address`/`amount Request: -+++ https://github.com/provenance-io/provenance/blob/dwedul/1607-in-place-escrow/proto/provenance/hold/v1/query.proto#L47-L54 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/hold/v1/query.proto#L51-L58 Response: -+++ https://github.com/provenance-io/provenance/blob/dwedul/1607-in-place-escrow/proto/provenance/hold/v1/query.proto#L56-L62 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/hold/v1/query.proto#L60-L66 -+++ https://github.com/provenance-io/provenance/blob/dwedul/1607-in-place-escrow/proto/provenance/hold/v1/hold.proto#L12-L19 + + ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/hold/v1/hold.proto#L12-L23 It is expected to fail if the pagination parameters are invalid. diff --git a/x/marker/spec/01_state.md b/x/marker/spec/01_state.md index ec9febb8ae..3564444ae0 100644 --- a/x/marker/spec/01_state.md +++ b/x/marker/spec/01_state.md @@ -18,8 +18,10 @@ Markers are represented as a type that extends the `base_account` type of the `auth` SDK module. As a valid account a marker is able to perform normal functions such as receiving and holding coins, and having a defined address that can be queried against for balance information from the `bank` module. + + ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/marker/v1/marker.proto#L28-L59 -+++ https://github.com/provenance-io/provenance/blob/22740319ba4b3ba268b3720d4bee36d6c6b06b40/proto/provenance/marker/v1/marker.proto#L28-L63 ```go type MarkerAccount struct { // cosmos base_account including address and account number @@ -181,8 +183,9 @@ iterator from the auth module. ### Marker Net Asset Value A marker can support multiple distinct net asset values assigned to track settlement pricing information on-chain. The `price` attribute denotes the value assigned to the marker for a specific asset's associated `volume`. For instance, when considering a scenario where 10 billion `nhash` holds a value of 15¢, the corresponding `volume` should reflect the quantity of 10,000,000,000. The `update_block_height` attribute captures the block height when the update occurred. + -+++ https://github.com/provenance-io/provenance/blob/25070572cc898c476f5bb1a816c6c1c4d07e3d38/proto/provenance/marker/v1/marker.proto#L96-L104 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/marker/v1/marker.proto#L91-L99 ## Params @@ -191,4 +194,4 @@ and defines overall functioning of the marker module. - Params: `Paramsspace("marker") -> legacy_amino(params)` -+++ https://github.com/provenance-io/provenance/blob/22740319ba4b3ba268b3720d4bee36d6c6b06b40/proto/provenance/marker/v1/marker.proto#L14-L25 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/marker/v1/marker.proto#L14-L26 diff --git a/x/marker/spec/03_messages.md b/x/marker/spec/03_messages.md index 2377c1efd2..385982040e 100644 --- a/x/marker/spec/03_messages.md +++ b/x/marker/spec/03_messages.md @@ -5,38 +5,38 @@ All created/modified state objects specified by each message are defined within [state](./02_state_transitions.md) section. - - [Msg/AddMarkerRequest](#msgaddmarkerrequest) - - [Msg/AddAccessRequest](#msgaddaccessrequest) - - [Msg/DeleteAccessRequest](#msgdeleteaccessrequest) - - [Msg/FinalizeRequest](#msgfinalizerequest) - - [Msg/ActivateRequest](#msgactivaterequest) - - [Msg/CancelRequest](#msgcancelrequest) - - [Msg/DeleteRequest](#msgdeleterequest) - - [Msg/MintRequest](#msgmintrequest) - - [Msg/BurnRequest](#msgburnrequest) - - [Msg/WithdrawRequest](#msgwithdrawrequest) - - [Msg/TransferRequest](#msgtransferrequest) - - [Msg/IbcTransferRequest](#msgibctransferrequest) - - [Msg/SetDenomMetadataRequest](#msgsetdenommetadatarequest) - - [Msg/AddFinalizeActivateMarkerRequest](#msgaddfinalizeactivatemarkerrequest) - - [Msg/GrantAllowanceRequest](#msggrantallowancerequest) - - [Msg/SupplyIncreaseProposalRequest](#msgsupplyincreaseproposalrequest) - - [Msg/UpdateRequiredAttributesRequest](#msgupdaterequiredattributesrequest) - - [Msg/UpdateSendDenyListRequest](#msgupdatesenddenylistrequest) - - [Msg/UpdateForcedTransferRequest](#msgupdateforcedtransferrequest) - - [Msg/SetAccountDataRequest](#msgsetaccountdatarequest) - - [Msg/AddNetAssetValuesRequest](#msgaddnetassetvaluesrequest) - - -## Msg/AddMarkerRequest + - [Msg/AddMarker](#msgaddmarker) + - [Msg/AddAccess](#msgaddaccess) + - [Msg/DeleteAccess](#msgdeleteaccess) + - [Msg/Finalize](#msgfinalize) + - [Msg/Activate](#msgactivate) + - [Msg/Cancel](#msgcancel) + - [Msg/Delete](#msgdelete) + - [Msg/Mint](#msgmint) + - [Msg/Burn](#msgburn) + - [Msg/Withdraw](#msgwithdraw) + - [Msg/Transfer](#msgtransfer) + - [Msg/IbcTransfer](#msgibctransfer) + - [Msg/SetDenomMetadata](#msgsetdenommetadata) + - [Msg/AddFinalizeActivateMarker](#msgaddfinalizeactivatemarker) + - [Msg/GrantAllowance](#msggrantallowance) + - [Msg/SupplyIncreaseProposal](#msgsupplyincreaseproposal) + - [Msg/UpdateRequiredAttributes](#msgupdaterequiredattributes) + - [Msg/UpdateSendDenyList](#msgupdatesenddenylist) + - [Msg/UpdateForcedTransfer](#msgupdateforcedtransfer) + - [Msg/SetAccountData](#msgsetaccountdata) + - [Msg/AddNetAssetValues](#msgaddnetassetvalues) + + +## Msg/AddMarker A marker is created using the Add Marker service message. The created marker can not be directly added in an Active (or Cancelled/Destroyed) status. Markers must have a valid supply and denomination value. -+++ https://github.com/provenance-io/provenance/blob/d999e7acefea1d77e2d5ce86ea89524dbf2692f8/proto/provenance/marker/v1/tx.proto#L83-L102 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/marker/v1/tx.proto#L103-L121 -+++ https://github.com/provenance-io/provenance/blob/d999e7acefea1d77e2d5ce86ea89524dbf2692f8/proto/provenance/marker/v1/tx.proto#L104-L105 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/marker/v1/tx.proto#L123-L124 This service message is expected to fail if: @@ -62,13 +62,13 @@ If issued via governance proposal, and has a `from_address` of the governance mo - The marker's `allow_governance_control` flag ignores the `enable_governance` param value, and is set to the provided value. - If the marker status is Active, and no `manager` is provided, it is left blank (instead of being populated with the `from_address`). -## Msg/AddAccessRequest +## Msg/AddAccess Add Access Request is used to add permissions to a marker that allow the specified accounts to perform the specified actions. -+++ https://github.com/provenance-io/provenance/blob/22740319ba4b3ba268b3720d4bee36d6c6b06b40/proto/provenance/marker/v1/tx.proto#L98-L103 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/marker/v1/tx.proto#L126-L133 -+++ https://github.com/provenance-io/provenance/blob/22740319ba4b3ba268b3720d4bee36d6c6b06b40/proto/provenance/marker/v1/tx.proto#L105-106 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/marker/v1/tx.proto#L135-L136 This service message is expected to fail if: @@ -85,13 +85,13 @@ The Add Access request can be called many times on a marker with some or all of only be used against markers in the `Pending` status when called by the current marker manager address or against `Finalized` and `Active` markers when the caller is currently assigned the `Admin` access type. -## Msg/DeleteAccessRequest +## Msg/DeleteAccess DeleteAccess Request defines the Msg/DeleteAccess request type -+++ https://github.com/provenance-io/provenance/blob/22740319ba4b3ba268b3720d4bee36d6c6b06b40/proto/provenance/marker/v1/tx.proto#L108-L113 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/marker/v1/tx.proto#L138-L145 -+++ https://github.com/provenance-io/provenance/blob/22740319ba4b3ba268b3720d4bee36d6c6b06b40/proto/provenance/marker/v1/tx.proto#L114-L115 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/marker/v1/tx.proto#L146-L147 This service message is expected to fail if: @@ -104,13 +104,13 @@ The Delete Access request will remove all access granted to the given address on only be used against markers in the `Pending` status when called by the current marker manager address or against `Finalized` and `Active` markers when the caller is currently assigned the `Admin` access type. -## Msg/FinalizeRequest +## Msg/Finalize Finalize Request defines the Msg/Finalize request type -+++ https://github.com/provenance-io/provenance/blob/22740319ba4b3ba268b3720d4bee36d6c6b06b40/proto/provenance/marker/v1/tx.proto#L117-L121 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/marker/v1/tx.proto#L149-L155 -+++ https://github.com/provenance-io/provenance/blob/22740319ba4b3ba268b3720d4bee36d6c6b06b40/proto/provenance/marker/v1/tx.proto#L122-L123 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/marker/v1/tx.proto#L156-L157 This service message is expected to fail if: @@ -122,13 +122,13 @@ This service message is expected to fail if: The `Finalize` marker status performs a set of checks to ensure the marker is ready to be activated. It is designed to serve as an intermediate step prior to activation that indicates marker configuration is complete. -## Msg/ActivateRequest +## Msg/Activate Activate Request defines the Msg/Activate request type -+++ https://github.com/provenance-io/provenance/blob/22740319ba4b3ba268b3720d4bee36d6c6b06b40/proto/provenance/marker/v1/tx.proto#L125-L129 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/marker/v1/tx.proto#L159-L165 -+++ https://github.com/provenance-io/provenance/blob/22740319ba4b3ba268b3720d4bee36d6c6b06b40/proto/provenance/marker/v1/tx.proto#L130-L131 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/marker/v1/tx.proto#L166-L167 This service message is expected to fail if: @@ -145,13 +145,13 @@ rights assigned as access grants for any modification. If a marker has a fixed supply the begin block/invariant supply checks are also performed. If the supply is expected to float then the `total_supply` value will be set to zero upon activation. -## Msg/CancelRequest +## Msg/Cancel Cancel Request defines the Msg/Cancel request type -+++ https://github.com/provenance-io/provenance/blob/22740319ba4b3ba268b3720d4bee36d6c6b06b40/proto/provenance/marker/v1/tx.proto#L133-L137 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/marker/v1/tx.proto#L169-L175 -+++ https://github.com/provenance-io/provenance/blob/22740319ba4b3ba268b3720d4bee36d6c6b06b40/proto/provenance/marker/v1/tx.proto#L138-L139 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/marker/v1/tx.proto#L176-L177 This service message is expected to fail if: @@ -165,13 +165,13 @@ This service message is expected to fail if: - The amount in circulation is greater than zero or any remaining amount is not currently held in escrow within the marker account. -## Msg/DeleteRequest +## Msg/Delete Delete Request defines the Msg/Delete request type -+++ https://github.com/provenance-io/provenance/blob/22740319ba4b3ba268b3720d4bee36d6c6b06b40/proto/provenance/marker/v1/tx.proto#L141-L145 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/marker/v1/tx.proto#L179-L185 -+++ https://github.com/provenance-io/provenance/blob/22740319ba4b3ba268b3720d4bee36d6c6b06b40/proto/provenance/marker/v1/tx.proto#L146-L147 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/marker/v1/tx.proto#L186-L187 This service message is expected to fail if: @@ -183,13 +183,13 @@ This service message is expected to fail if: marker account. - There are any other coins remaining in escrow after supply has been fully burned. -## Msg/MintRequest +## Msg/Mint Mint Request defines the Msg/Mint request type -+++ https://github.com/provenance-io/provenance/blob/22740319ba4b3ba268b3720d4bee36d6c6b06b40/proto/provenance/marker/v1/tx.proto#L149-L154 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/marker/v1/tx.proto#L189-L195 -+++ https://github.com/provenance-io/provenance/blob/22740319ba4b3ba268b3720d4bee36d6c6b06b40/proto/provenance/marker/v1/tx.proto#L155-L156 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/marker/v1/tx.proto#L196-L197 This service message is expected to fail if: @@ -200,14 +200,14 @@ This service message is expected to fail if: - The requested amount of mint would increase the total supply in circulation above the configured supply limit set in the marker module params -## Msg/BurnRequest +## Msg/Burn Burn Request defines the Msg/Burn request type that is used to remove supply of the marker coin from circulation. In order to successfully burn supply the amount to burn must be held by the marker account itself (in escrow). -+++ https://github.com/provenance-io/provenance/blob/22740319ba4b3ba268b3720d4bee36d6c6b06b40/proto/provenance/marker/v1/tx.proto#L158-L163 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/marker/v1/tx.proto#L199-L205 -+++ https://github.com/provenance-io/provenance/blob/22740319ba4b3ba268b3720d4bee36d6c6b06b40/proto/provenance/marker/v1/tx.proto#L164-L165 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/marker/v1/tx.proto#L206-L207 This service message is expected to fail if: @@ -217,16 +217,16 @@ This service message is expected to fail if: - The given administrator address does not currently have the "burn" access granted on the marker - The amount of coin to burn is not currently held in escrow within the marker account. -## Msg/WithdrawRequest +## Msg/Withdraw Withdraw Request defines the Msg/Withdraw request type and is used to withdraw coin from escrow within the marker. NOTE: any denom coin can be held within a marker "in escrow", these values are not restricted to just the denom of the marker itself. -+++ https://github.com/provenance-io/provenance/blob/22740319ba4b3ba268b3720d4bee36d6c6b06b40/proto/provenance/marker/v1/tx.proto#L167-L174 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/marker/v1/tx.proto#L209-L222 -+++ https://github.com/provenance-io/provenance/blob/22740319ba4b3ba268b3720d4bee36d6c6b06b40/proto/provenance/marker/v1/tx.proto#L175-L176 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/marker/v1/tx.proto#L223-L224 This service message is expected to fail if: @@ -238,7 +238,7 @@ This service message is expected to fail if: - The given administrator address does not currently have the "withdraw" access granted on the marker - The amount of coin requested for withdraw is not currently held by the marker account -## Msg/TransferRequest +## Msg/Transfer Transfer Request defines the Msg/Transfer request type. A transfer request is used to transfer coin between two accounts for `RESTRICTED_COIN` type markers. Such markers have `send_enabled=false` configured with the `x/bank` module, @@ -247,9 +247,9 @@ with `TRANSFER` access. If force transfer is not enabled for the marker, the sou permission (via `authz`) to do the transfer. If force transfer is allowed for the marker, the source account does not need to approve of the transfer. -+++ https://github.com/provenance-io/provenance/blob/22740319ba4b3ba268b3720d4bee36d6c6b06b40/proto/provenance/marker/v1/tx.proto#L178-L185 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/marker/v1/tx.proto#L226-L234 -+++ https://github.com/provenance-io/provenance/blob/22740319ba4b3ba268b3720d4bee36d6c6b06b40/proto/provenance/marker/v1/tx.proto#L187-L188 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/marker/v1/tx.proto#L236-L237 This service message is expected to fail if: @@ -258,25 +258,25 @@ This service message is expected to fail if: - The given administrator address does not currently have the "transfer" access granted on the marker - The marker types is not `RESTRICTED_COIN` -## Msg/IbcTransferRequest +## Msg/IbcTransfer Ibc transfer Request defines the Msg/IbcTransfer request type. The `IbcTransferRequest` is used to transfer `RESTRICTED_COIN` type markers to another chain via ibc. These coins have their `send_enabled` flag disabled by the bank module and thus cannot be sent using a normal `send_coin` operation. NOTE: A transfer request also requires a signature from an account with the transfer permission as well as approval from the account the funds will be withdrawn from. -+++ https://github.com/provenance-io/provenance/blob/22740319ba4b3ba268b3720d4bee36d6c6b06b40/proto/provenance/marker/v1/tx.proto#L190-L197 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/marker/v1/tx.proto#L239-L248 -+++ https://github.com/provenance-io/provenance/blob/22740319ba4b3ba268b3720d4bee36d6c6b06b40/proto/provenance/marker/v1/tx.proto#L199-L200 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/marker/v1/tx.proto#L250-L251 -## Msg/SetDenomMetadataRequest +## Msg/SetDenomMetadata SetDenomMetadata Request defines the Msg/SetDenomMetadata request type. This request is used to set the informational denom metadata held within the bank module. Denom metadata can be used to provide a more streamlined user experience within block explorers or similar applications. -+++ https://github.com/provenance-io/provenance/blob/22740319ba4b3ba268b3720d4bee36d6c6b06b40/proto/provenance/marker/v1/tx.proto#L202-L207 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/marker/v1/tx.proto#L253-L260 -+++ https://github.com/provenance-io/provenance/blob/22740319ba4b3ba268b3720d4bee36d6c6b06b40/proto/provenance/marker/v1/tx.proto#L209-L210 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/marker/v1/tx.proto#L262-L263 This service message is expected to fail if: @@ -293,13 +293,13 @@ This service message is expected to fail if: - DenomUnit Denom fields are modified. - Any aliases are removed from a DenomUnit. -## Msg/AddFinalizeActivateMarkerRequest +## Msg/AddFinalizeActivateMarker AddFinalizeActivate requested is used for adding, finalizing, and activating a marker in a single request. -+++ https://github.com/provenance-io/provenance/blob/d999e7acefea1d77e2d5ce86ea89524dbf2692f8/proto/provenance/marker/v1/tx.proto#L221-L236 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/marker/v1/tx.proto#L265-L281 -+++ https://github.com/provenance-io/provenance/blob/d999e7acefea1d77e2d5ce86ea89524dbf2692f8/proto/provenance/marker/v1/tx.proto#L238-L239 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/marker/v1/tx.proto#L283-L284 This service message is expected to fail if: @@ -312,13 +312,13 @@ This service message is expected to fail if: - Contains a grant with an invalid address - Contains a grant with an invalid access enum value (Unspecified/0) -## Msg/GrantAllowanceRequest +## Msg/GrantAllowance GrantAllowance grants a fee allowance to the grantee on the granter's account. -+++ https://github.com/provenance-io/provenance/blob/22740319ba4b3ba268b3720d4bee36d6c6b06b40/proto/provenance/marker/v1/tx.proto#L61-L72 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/marker/v1/tx.proto#L85-L98 -+++ https://github.com/provenance-io/provenance/blob/22740319ba4b3ba268b3720d4bee36d6c6b06b40/proto/provenance/marker/v1/tx.proto#L74-L75 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/marker/v1/tx.proto#L100-L101 This service message is expected to fail if: @@ -328,13 +328,13 @@ This service message is expected to fail if: - The administrator or grantee are invalid addresses - The administrator does not have `ADMIN` access on the marker. -## Msg/SupplyIncreaseProposalRequest +## Msg/SupplyIncreaseProposal SupplyIncreaseProposal is a governance-only message for increasing the supply of a marker. -+++ https://github.com/provenance-io/provenance/blob/22740319ba4b3ba268b3720d4bee36d6c6b06b40/proto/provenance/marker/v1/tx.proto#L229-L239 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/marker/v1/tx.proto#L286-L295 -+++ https://github.com/provenance-io/provenance/blob/22740319ba4b3ba268b3720d4bee36d6c6b06b40/proto/provenance/marker/v1//tx.proto#L241-L242 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/marker/v1/tx.proto#L297-L298 This service message is expected to fail if: @@ -344,13 +344,13 @@ This service message is expected to fail if: See also: [Governance: Supply Increase Proposal](./10_governance.md#supply-increase-proposal) -## Msg/UpdateRequiredAttributesRequest +## Msg/UpdateRequiredAttributes UpdateRequiredAttributes allows signers that have transfer authority or via gov proposal to add and remove required attributes from a restricted marker. -+++ https://github.com/provenance-io/provenance/blob/22740319ba4b3ba268b3720d4bee36d6c6b06b40/proto/provenance/marker/v1/tx.proto#L244-L255 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/marker/v1/tx.proto#L313-L328 -+++ https://github.com/provenance-io/provenance/blob/22740319ba4b3ba268b3720d4bee36d6c6b06b40/proto/provenance/marker/v1/tx.proto#L257-L258 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/marker/v1/tx.proto#L330-L331 This service message is expected to fail if: @@ -359,13 +359,13 @@ This service message is expected to fail if: - Attributes cannot be normalized - Marker denom cannot be found or is not a restricted marker -## Msg/UpdateSendDenyListRequest +## Msg/UpdateSendDenyList UpdateSendDenyList allows signers that have transfer authority or via gov proposal to add and remove addresses to the deny send list for a restricted marker. -+++ https://github.com/provenance-io/provenance/blob/373d0ee8faeaa9e3b70d658e6069ab1781e6ce5e/proto/provenance/marker/v1/tx.proto#L295-L308 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/marker/v1/tx.proto#L367-L381 -+++ https://github.com/provenance-io/provenance/blob/373d0ee8faeaa9e3b70d658e6069ab1781e6ce5e/proto/provenance/marker/v1/tx.proto#L310-L311 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/marker/v1/tx.proto#L383-L384 This service message is expected to fail if: @@ -376,14 +376,14 @@ This service message is expected to fail if: - Marker denom cannot be found or is not a restricted marker - Signer does not have transfer authority or is not from gov proposal -## Msg/UpdateForcedTransferRequest +## Msg/UpdateForcedTransfer UpdateForcedTransfer allows for the activation or deactivation of forced transfers for a marker. This message must be submitted via governance proposal. -+++ https://github.com/provenance-io/provenance/blob/a830a8ecf24199469de52b92ee20475d6912f2eb/proto/provenance/marker/v1/tx.proto#L260-L272 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/marker/v1/tx.proto#L333-L345 -+++ https://github.com/provenance-io/provenance/blob/a830a8ecf24199469de52b92ee20475d6912f2eb/proto/provenance/marker/v1/tx.proto#L274-L275 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/marker/v1/tx.proto#L347-L348 This service message is expected to fail if: @@ -392,13 +392,13 @@ This service message is expected to fail if: - The marker is not a restricted coin. - The marker does not allow governance control. -## Msg/SetAccountDataRequest +## Msg/SetAccountData SetAccountData allows the association of some data (a string) with a marker. -+++ https://github.com/provenance-io/provenance/blob/e83f1955cba07e2ba87790c4487d22632ae9e69c/proto/provenance/marker/v1/tx.proto#L279-L291 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/marker/v1/tx.proto#L350-L362 -+++ https://github.com/provenance-io/provenance/blob/e83f1955cba07e2ba87790c4487d22632ae9e69c/proto/provenance/marker/v1/tx.proto#L293-L294 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/marker/v1/tx.proto#L364-L365 This endpoint can either be used directly or via governance proposal. @@ -409,13 +409,13 @@ This service message is expected to fail if: - The signer is not the governance module account and does not have deposit access on the marker. - The provided value is too long (as defined by the attribute module params). -## Msg/AddNetAssetValuesRequest +## Msg/AddNetAssetValues AddNetAssetValuesRequest allows for the adding/updating of net asset values for a marker. -+++ https://github.com/provenance-io/provenance/blob/25070572cc898c476f5bb1a816c6c1c4d07e3d38/proto/provenance/marker/v1/tx.proto#L327-L332 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/marker/v1/tx.proto#L386-L393 -+++ https://github.com/provenance-io/provenance/blob/25070572cc898c476f5bb1a816c6c1c4d07e3d38/proto/provenance/marker/v1/tx.proto#L334-L335 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/marker/v1/tx.proto#L395-L396 This endpoint can either be used directly or via governance proposal. diff --git a/x/marker/spec/07_events.md b/x/marker/spec/07_events.md index a9ccf958b7..546ecbdfe3 100644 --- a/x/marker/spec/07_events.md +++ b/x/marker/spec/07_events.md @@ -229,4 +229,4 @@ Type: `provenance.marker.v1.EventMarkerParamsUpdated` |-------------------------|-----------------------------------------------------| | EnableGovernance | \{value for if governance control is enabled\} | | UnrestrictedDenomRegex | \{regex for unrestricted denom validation\} | -| MaxSupply | \{value for the max allowed supply\} | \ No newline at end of file +| MaxSupply | \{value for the max allowed supply\} | diff --git a/x/marker/spec/10_governance.md b/x/marker/spec/10_governance.md index 7454f1b2fc..ce2daaae83 100644 --- a/x/marker/spec/10_governance.md +++ b/x/marker/spec/10_governance.md @@ -28,7 +28,7 @@ bank module. A further difference from the standard add marker flow is that governance proposals to add a marker can directly set a marker to the `Active` status with the appropriate minting operations performed immediately. -+++ https://github.com/provenance-io/provenance/blob/22740319ba4b3ba268b3720d4bee36d6c6b06b40/proto/provenance/marker/v1/proposals.proto#L15-L34 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/marker/v1/proposals.proto#L16-L33 This request is expected to fail if: - The governance proposal format (title, description, etc) is invalid @@ -44,7 +44,7 @@ This request is expected to fail if: SupplyIncreaseProposal defines a governance proposal to administer a marker and increase total supply of the marker through minting coin and placing it within the marker or assigning it directly to an account. -+++ https://github.com/provenance-io/provenance/blob/22740319ba4b3ba268b3720d4bee36d6c6b06b40/proto/provenance/marker/v1/proposals.proto#L36-L47 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/marker/v1/proposals.proto#L35-L47 This request is expected to fail if: - The governance proposal format (title, description, etc) is invalid @@ -55,7 +55,7 @@ This request is expected to fail if: SupplyDecreaseProposal defines a governance proposal to administer a marker and decrease the total supply through burning coin held within the marker -+++ https://github.com/provenance-io/provenance/blob/22740319ba4b3ba268b3720d4bee36d6c6b06b40/proto/provenance/marker/v1/proposals.proto#L49-L59 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/marker/v1/proposals.proto#L49-L60 This request is expected to fail if: - The governance proposal format (title, description, etc) is invalid @@ -71,7 +71,7 @@ The chain will panic and halt if: SetAdministratorProposal defines a governance proposal to administer a marker and set administrators with specific access on the marker -+++ https://github.com/provenance-io/provenance/blob/22740319ba4b3ba268b3720d4bee36d6c6b06b40/proto/provenance/marker/v1/proposals.proto#L61-L71 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/marker/v1/proposals.proto#L62-L74 This request is expected to fail if: - The governance proposal format (title, description, etc) is invalid @@ -84,7 +84,7 @@ This request is expected to fail if: RemoveAdministratorProposal defines a governance proposal to administer a marker and remove all permissions for a given address -+++ https://github.com/provenance-io/provenance/blob/22740319ba4b3ba268b3720d4bee36d6c6b06b40/proto/provenance/marker/v1/proposals.proto#L73-L83 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/marker/v1/proposals.proto#L76-L88 This request is expected to fail if: - The governance proposal format (title, description, etc) is invalid @@ -96,7 +96,7 @@ This request is expected to fail if: ChangeStatusProposal defines a governance proposal to administer a marker to change its status -+++ https://github.com/provenance-io/provenance/blob/22740319ba4b3ba268b3720d4bee36d6c6b06b40/proto/provenance/marker/v1/proposals.proto#L85-L94 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/marker/v1/proposals.proto#L90-L101 This request is expected to fail if: - The governance proposal format (title, description, etc) is invalid @@ -111,7 +111,7 @@ This request is expected to fail if: WithdrawEscrowProposal defines a governance proposal to withdraw escrow coins from a marker -+++ https://github.com/provenance-io/provenance/blob/22740319ba4b3ba268b3720d4bee36d6c6b06b40/proto/provenance/marker/v1/proposals.proto#L96-L107 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/marker/v1/proposals.proto#L103-L120 This request is expected to fail if: - The governance proposal format (title, description, etc) is invalid @@ -122,7 +122,7 @@ This request is expected to fail if: SetDenomMetadataProposal defines a governance proposal to set the metadata for a denom. -+++ https://github.com/provenance-io/provenance/blob/22740319ba4b3ba268b3720d4bee36d6c6b06b40/proto/provenance/marker/v1/proposals.proto#L109-L117 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/marker/v1/proposals.proto#L122-L133 This request is expected to fail if: - The governance proposal format (title, description, etc) is invalid diff --git a/x/metadata/spec/02_state.md b/x/metadata/spec/02_state.md index 09161c7fcc..c946b10d65 100644 --- a/x/metadata/spec/02_state.md +++ b/x/metadata/spec/02_state.md @@ -41,8 +41,9 @@ Byte Array Length: `17` * Bech32 Example: `"scope1qzge0zaztu65tx5x5llv5xc9ztsqxlkwel"` #### Scope Values + -+++ https://github.com/provenance-io/provenance/blob/812cb97c77036b8df59e10845fa8a04f4ba84c43/proto/provenance/metadata/v1/scope.proto#L69-L96 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/scope.proto#L70-L90 ```protobuf // Scope defines a root reference for a collection of records owned by one or more parties. @@ -110,8 +111,9 @@ Byte Array Length: `33` * Bech32 Example: `"session1qxge0zaztu65tx5x5llv5xc9zts9sqlch3sxwn44j50jzgt8rshvqyfrjcr"` #### Session Values + -+++ https://github.com/provenance-io/provenance/blob/812cb97c77036b8df59e10845fa8a04f4ba84c43/proto/provenance/metadata/v1/scope.proto#L98-L124 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/scope.proto#L92-L111 ```protobuf // Session defines an execution context against a specific specification instance. @@ -166,8 +168,9 @@ Byte Array Length: `33` * Bech32 Example: `"record1q2ge0zaztu65tx5x5llv5xc9ztsw42dq2jdvmdazuwzcaddhh8gmu3mcze3"` #### Record Values + -+++ https://github.com/provenance-io/provenance/blob/812cb97c77036b8df59e10845fa8a04f4ba84c43/proto/provenance/metadata/v1/scope.proto#L126-L150 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/scope.proto#L113-L130 ```protobuf // A record (of fact) is attached to a session or each consideration output from a contract @@ -221,8 +224,9 @@ Byte Array Length: `17` * Bech32 Example: `"scopespec1qnwg86nsatx5pl56muw0v9ytlz3qu3jx6m"` #### Scope Specification Values + -+++ https://github.com/provenance-io/provenance/blob/4192fd46ea56574bb4ffcacb632d8bb54a720b28/proto/provenance/metadata/v1/specification.proto#L36-L58 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/specification.proto#L36-L51 ```protobuf // ScopeSpecification defines the required parties, resources, conditions, and consideration outputs for a contract @@ -285,8 +289,9 @@ Byte Array Length: `17` * Bech32 Example: `"contractspec1q000d0q2e8w5say53afqdesxp2zqzkr4fn"` #### Contract Specification Values + -+++ https://github.com/provenance-io/provenance/blob/4192fd46ea56574bb4ffcacb632d8bb54a720b28/proto/provenance/metadata/v1/specification.proto#L60-L86 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/specification.proto#L53-L76 ```protobuf // ContractSpecification defines the required parties, resources, conditions, and consideration outputs for a contract @@ -351,8 +356,9 @@ Byte Array Length: `33` * Bech32 Example: `"recspec1qh00d0q2e8w5say53afqdesxp2zw42dq2jdvmdazuwzcaddhh8gmuqhez44"` #### Record Specification Values + -+++ https://github.com/provenance-io/provenance/blob/4192fd46ea56574bb4ffcacb632d8bb54a720b28/proto/provenance/metadata/v1/specification.proto#L88-L108 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/specification.proto#L78-L95 ```protobuf // RecordSpecification defines the specification for a Record including allowed/required inputs/outputs @@ -396,8 +402,9 @@ Byte Array Length: `21` | 2-(21 or 33) | The bytes of the owner address. | #### Object Store Locator Values + -+++ https://github.com/provenance-io/provenance/blob/main/proto/provenance/metadata/v1/objectstore.proto#L9-L16 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/objectstore.proto#L12-L23 ```protobuf // Defines an Locator object stored on chain, which represents a owner( blockchain address) associated with a endpoint diff --git a/x/metadata/spec/03_messages.md b/x/metadata/spec/03_messages.md index bd08e10bbb..c102a0656f 100644 --- a/x/metadata/spec/03_messages.md +++ b/x/metadata/spec/03_messages.md @@ -48,7 +48,7 @@ Scopes are identified using their `scope_id`. #### Request -+++ https://github.com/provenance-io/provenance/blob/812cb97c77036b8df59e10845fa8a04f4ba84c43/proto/provenance/metadata/v1/tx.proto#L76-L99 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/tx.proto#L93-L119 The `scope_uuid` field is optional. It should be a uuid formated as a string using the standard UUID format. @@ -60,7 +60,7 @@ If supplied, it will be used to generate the appropriate scope specification id #### Response -+++ https://github.com/provenance-io/provenance/blob/812cb97c77036b8df59e10845fa8a04f4ba84c43/proto/provenance/metadata/v1/tx.proto#L101-L105 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/tx.proto#L121-L125 #### Expected failures @@ -80,11 +80,11 @@ A scope is deleted using the `DeleteScope` service method. #### Request -+++ https://github.com/provenance-io/provenance/blob/812cb97c77036b8df59e10845fa8a04f4ba84c43/proto/provenance/metadata/v1/tx.proto#L107-L120 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/tx.proto#L127-L136 #### Response -+++ https://github.com/provenance-io/provenance/blob/812cb97c77036b8df59e10845fa8a04f4ba84c43/proto/provenance/metadata/v1/tx.proto#L122-L123 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/tx.proto#L138-L139 #### Expected failures @@ -99,11 +99,11 @@ Addresses can be added to a scope's data access list using the `AddScopeDataAcce #### Request -+++ https://github.com/provenance-io/provenance/blob/812cb97c77036b8df59e10845fa8a04f4ba84c43/proto/provenance/metadata/v1/tx.proto#L125-L142 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/tx.proto#L141-L154 #### Response -+++ https://github.com/provenance-io/provenance/blob/812cb97c77036b8df59e10845fa8a04f4ba84c43/proto/provenance/metadata/v1/tx.proto#L144-L145 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/tx.proto#L156-L157 #### Expected failures @@ -119,11 +119,11 @@ Addresses can be deleted from a scope's data access list using the `DeleteScopeD #### Request -+++ https://github.com/provenance-io/provenance/blob/812cb97c77036b8df59e10845fa8a04f4ba84c43/proto/provenance/metadata/v1/tx.proto#L147-L164 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/tx.proto#L159-L172 #### Response -+++ https://github.com/provenance-io/provenance/blob/812cb97c77036b8df59e10845fa8a04f4ba84c43/proto/provenance/metadata/v1/tx.proto#L166-L167 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/tx.proto#L174-L175 #### Expected failures @@ -138,11 +138,11 @@ Scope owners can be added to a scope using the `AddScopeOwner` service method. #### Request -+++ https://github.com/provenance-io/provenance/blob/812cb97c77036b8df59e10845fa8a04f4ba84c43/proto/provenance/metadata/v1/tx.proto#L169-L186 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/tx.proto#L177-L190 #### Response -+++ https://github.com/provenance-io/provenance/blob/812cb97c77036b8df59e10845fa8a04f4ba84c43/proto/provenance/metadata/v1/tx.proto#L188-L189 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/tx.proto#L192-L193 #### Expected failures @@ -159,11 +159,11 @@ All owner parties with any of the provided addresses will be removed from the sc #### Request -+++ https://github.com/provenance-io/provenance/blob/812cb97c77036b8df59e10845fa8a04f4ba84c43/proto/provenance/metadata/v1/tx.proto#L191-L208 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/tx.proto#L195-L208 #### Response -+++ https://github.com/provenance-io/provenance/blob/812cb97c77036b8df59e10845fa8a04f4ba84c43/proto/provenance/metadata/v1/tx.proto#L210-L211 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/tx.proto#L210-L211 #### Expected failures @@ -179,11 +179,11 @@ The value owner address of one or more scopes can be updated using the `UpdateVa #### Request -+++ https://github.com/provenance-io/provenance/blob/37cdb0c84db7b2f91aef057a606c5ba6aece06a1/proto/provenance/metadata/v1/tx.proto#L219-L235 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/tx.proto#L213-L225 #### Response -+++ https://github.com/provenance-io/provenance/blob/37cdb0c84db7b2f91aef057a606c5ba6aece06a1/proto/provenance/metadata/v1/tx.proto#L237-L238 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/tx.proto#L227-L228 #### Expected failures @@ -199,11 +199,11 @@ All scopes with a given existing value owner address can be updated to have a ne #### Request -+++ https://github.com/provenance-io/provenance/blob/37cdb0c84db7b2f91aef057a606c5ba6aece06a1/proto/provenance/metadata/v1/tx.proto#L240-L252 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/tx.proto#L230-L242 #### Response -+++ https://github.com/provenance-io/provenance/blob/37cdb0c84db7b2f91aef057a606c5ba6aece06a1/proto/provenance/metadata/v1/tx.proto#L254-L255 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/tx.proto#L244-L245 #### Expected failures @@ -221,7 +221,7 @@ Sessions are identified using their `session_id`. #### Request -+++ https://github.com/provenance-io/provenance/blob/812cb97c77036b8df59e10845fa8a04f4ba84c43/proto/provenance/metadata/v1/tx.proto#L213-L238 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/tx.proto#L247-L272 The `session_id_components` field is optional. If supplied, it will be used to generate the appropriate session id for use in the `session.session_id` field. @@ -232,7 +232,7 @@ If supplied, it will be used to generate the appropriate contract specification #### Response -+++ https://github.com/provenance-io/provenance/blob/812cb97c77036b8df59e10845fa8a04f4ba84c43/proto/provenance/metadata/v1/tx.proto#L253-L257 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/tx.proto#L287-L291 #### Expected failures @@ -259,7 +259,7 @@ Records are identified using their `name` and `session_id`. #### Request -+++ https://github.com/provenance-io/provenance/blob/812cb97c77036b8df59e10845fa8a04f4ba84c43/proto/provenance/metadata/v1/tx.proto#L260-L289 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/tx.proto#L293-L323 The `session_id_components` field is optional. If supplied, it will be used to generate the appropriate session id for use in the `record.session_id` field. @@ -270,7 +270,7 @@ If supplied, it will be used with `record.name` to generate the appropriate reco #### Response -+++ https://github.com/provenance-io/provenance/blob/812cb97c77036b8df59e10845fa8a04f4ba84c43/proto/provenance/metadata/v1/tx.proto#L291-L295 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/tx.proto#L325-L329 #### Expected failures @@ -312,11 +312,11 @@ A record is deleted using the `DeleteRecord` service method. #### Request -+++ https://github.com/provenance-io/provenance/blob/812cb97c77036b8df59e10845fa8a04f4ba84c43/proto/provenance/metadata/v1/tx.proto#L297-L310 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/tx.proto#L331-L340 #### Response -+++ https://github.com/provenance-io/provenance/blob/812cb97c77036b8df59e10845fa8a04f4ba84c43/proto/provenance/metadata/v1/tx.proto#L312-L313 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/tx.proto#L342-L343 #### Expected failures @@ -337,7 +337,7 @@ Scope specifications are identified using their `specification_id`. #### Request -+++ https://github.com/provenance-io/provenance/blob/812cb97c77036b8df59e10845fa8a04f4ba84c43/proto/provenance/metadata/v1/tx.proto#L315-L333 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/tx.proto#L345-L363 The `spec_uuid` field is optional. It should be a uuid formated as a string using the standard UUID format. @@ -345,7 +345,7 @@ If supplied, it will be used to generate the appropriate scope specification id #### Response -+++ https://github.com/provenance-io/provenance/blob/812cb97c77036b8df59e10845fa8a04f4ba84c43/proto/provenance/metadata/v1/tx.proto#L335-L339 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/tx.proto#L365-L369 #### Expected failures @@ -369,11 +369,11 @@ A scope specification is deleted using the `DeleteScopeSpecification` service me #### Request -+++ https://github.com/provenance-io/provenance/blob/812cb97c77036b8df59e10845fa8a04f4ba84c43/proto/provenance/metadata/v1/tx.proto#L341-L354 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/tx.proto#L371-L380 #### Response -+++ https://github.com/provenance-io/provenance/blob/812cb97c77036b8df59e10845fa8a04f4ba84c43/proto/provenance/metadata/v1/tx.proto#L356-L357 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/tx.proto#L382-L383 #### Expected failures @@ -390,7 +390,7 @@ Contract specifications are identified using their `specification_id`. #### Request -+++ https://github.com/provenance-io/provenance/blob/812cb97c77036b8df59e10845fa8a04f4ba84c43/proto/provenance/metadata/v1/tx.proto#L359-L377 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/tx.proto#L385-L403 The `spec_uuid` field is optional. It should be a uuid formated as a string using the standard UUID format. @@ -398,7 +398,7 @@ If supplied, it will be used to generate the appropriate contract specification #### Response -+++ https://github.com/provenance-io/provenance/blob/812cb97c77036b8df59e10845fa8a04f4ba84c43/proto/provenance/metadata/v1/tx.proto#L379-L384 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/tx.proto#L405-L410 #### Expected failures @@ -426,11 +426,11 @@ This will also delete all record specifications associated with this contract sp #### Request -+++ https://github.com/provenance-io/provenance/blob/812cb97c77036b8df59e10845fa8a04f4ba84c43/proto/provenance/metadata/v1/tx.proto#L437-L450 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/tx.proto#L447-L456 #### Response -+++ https://github.com/provenance-io/provenance/blob/812cb97c77036b8df59e10845fa8a04f4ba84c43/proto/provenance/metadata/v1/tx.proto#L452-L453 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/tx.proto#L458-L459 #### Expected failures @@ -446,11 +446,11 @@ A contract specification can be added to a scope specification using the `AddCon #### Request -+++ https://github.com/provenance-io/provenance/blob/812cb97c77036b8df59e10845fa8a04f4ba84c43/proto/provenance/metadata/v1/tx.proto#L386-L406 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/tx.proto#L412-L424 #### Response -+++ https://github.com/provenance-io/provenance/blob/812cb97c77036b8df59e10845fa8a04f4ba84c43/proto/provenance/metadata/v1/tx.proto#L408-L409 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/tx.proto#L426-L427 #### Expected failures @@ -469,11 +469,11 @@ A contract specification can be removed from a scope specification using the `Ad #### Request -+++ https://github.com/provenance-io/provenance/blob/812cb97c77036b8df59e10845fa8a04f4ba84c43/proto/provenance/metadata/v1/tx.proto#L411-L431 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/tx.proto#L429-L441 #### Response -+++ https://github.com/provenance-io/provenance/blob/812cb97c77036b8df59e10845fa8a04f4ba84c43/proto/provenance/metadata/v1/tx.proto#L433-L435 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/tx.proto#L443-L445 #### Expected failures @@ -493,7 +493,7 @@ Record specifications are identified using their `specification_id`. #### Request -+++ https://github.com/provenance-io/provenance/blob/812cb97c77036b8df59e10845fa8a04f4ba84c43/proto/provenance/metadata/v1/tx.proto#L455-L473 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/tx.proto#L461-L479 The `contract_spec_uuid` field is optional. It should be a uuid formated as a string using the standard UUID format. @@ -501,7 +501,7 @@ If supplied, it will be used with the `specification.name` to generate the appro #### Response -+++ https://github.com/provenance-io/provenance/blob/812cb97c77036b8df59e10845fa8a04f4ba84c43/proto/provenance/metadata/v1/tx.proto#L475-L480 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/tx.proto#L481-L486 #### Expected failures @@ -528,11 +528,11 @@ A record specification is deleted using the `DeleteRecordSpecification` service #### Request -+++ https://github.com/provenance-io/provenance/blob/812cb97c77036b8df59e10845fa8a04f4ba84c43/proto/provenance/metadata/v1/tx.proto#L482-L495 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/tx.proto#L488-L497 #### Response -+++ https://github.com/provenance-io/provenance/blob/812cb97c77036b8df59e10845fa8a04f4ba84c43/proto/provenance/metadata/v1/tx.proto#L497-L498 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/tx.proto#L499-L500 #### Expected failures @@ -550,11 +550,11 @@ An Object Store Locator entry is created using the `BindOSLocator` service metho #### Request -+++ https://github.com/provenance-io/provenance/blob/812cb97c77036b8df59e10845fa8a04f4ba84c43/proto/provenance/metadata/v1/tx.proto#L500-L506 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/tx.proto#L502-L509 #### Response -+++ https://github.com/provenance-io/provenance/blob/812cb97c77036b8df59e10845fa8a04f4ba84c43/proto/provenance/metadata/v1/tx.proto#L508-L511 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/tx.proto#L511-L514 #### Expected failures @@ -573,11 +573,11 @@ An Object Store Locator entry is deleted using the `DeleteOSLocator` service met #### Request -+++ https://github.com/provenance-io/provenance/blob/812cb97c77036b8df59e10845fa8a04f4ba84c43/proto/provenance/metadata/v1/tx.proto#L513-L520 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/tx.proto#L516-L524 #### Response -+++ https://github.com/provenance-io/provenance/blob/812cb97c77036b8df59e10845fa8a04f4ba84c43/proto/provenance/metadata/v1/tx.proto#L522-L525 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/tx.proto#L526-L529 #### Expected failures @@ -598,11 +598,11 @@ Object Store Locators are identified by their `owner`. #### Request -+++ https://github.com/provenance-io/provenance/blob/812cb97c77036b8df59e10845fa8a04f4ba84c43/proto/provenance/metadata/v1/tx.proto#L527-L533 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/tx.proto#L531-L538 #### Response -+++ https://github.com/provenance-io/provenance/blob/812cb97c77036b8df59e10845fa8a04f4ba84c43/proto/provenance/metadata/v1/tx.proto#L535-L538 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/tx.proto#L540-L543 #### Expected failures @@ -621,9 +621,9 @@ This service message is expected to fail if: Simple data (a string) can be associated with scopes using the `SetAccountData` service method. -+++ https://github.com/provenance-io/provenance/blob/e83f1955cba07e2ba87790c4487d22632ae9e69c/proto/provenance/metadata/v1/tx.proto#L589-L606 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/tx.proto#L545-L558 -+++ https://github.com/provenance-io/provenance/blob/e83f1955cba07e2ba87790c4487d22632ae9e69c/proto/provenance/metadata/v1/tx.proto#L608-L609 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/tx.proto#L560-L561 This service message is expected to fail if: * The provided address is not a scope id. diff --git a/x/metadata/spec/05_queries.md b/x/metadata/spec/05_queries.md index d0183cd148..f2a0bb88b8 100644 --- a/x/metadata/spec/05_queries.md +++ b/x/metadata/spec/05_queries.md @@ -39,12 +39,12 @@ If a requested entry or specification isn't found, an empty wrapper containing o The `Params` query gets the parameters of the metadata module. ### Request -+++ https://github.com/provenance-io/provenance/blob/3b77d267d4336deba89fc2196243e80952de51a1/proto/provenance/metadata/v1/query.proto#L247-L251 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/query.proto#L252-L256 There are no inputs for this query. ### Response -+++ https://github.com/provenance-io/provenance/blob/3b77d267d4336deba89fc2196243e80952de51a1/proto/provenance/metadata/v1/query.proto#L253-L260 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/query.proto#L258-L265 --- @@ -53,7 +53,7 @@ There are no inputs for this query. The `Scope` query gets a scope. ### Request -+++ https://github.com/provenance-io/provenance/blob/3b77d267d4336deba89fc2196243e80952de51a1/proto/provenance/metadata/v1/query.proto#L262-L282 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/query.proto#L267-L287 The `scope_id`, if provided, must either be scope uuid, e.g. `91978ba2-5f35-459a-86a7-feca1b0512e0` or a scope address, e.g. `scope1qzge0zaztu65tx5x5llv5xc9ztsqxlkwel`. The session addr, if provided, must be a bech32 session address, @@ -73,7 +73,7 @@ By default, sessions and records are not included. Set `include_sessions` and/or `include_records` to true to include sessions and/or records. ### Response -+++ https://github.com/provenance-io/provenance/blob/3b77d267d4336deba89fc2196243e80952de51a1/proto/provenance/metadata/v1/query.proto#L284-L295 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/query.proto#L289-L300 --- @@ -84,12 +84,12 @@ The `ScopesAll` query gets all scopes. This query is paginated. ### Request -+++ https://github.com/provenance-io/provenance/blob/3b77d267d4336deba89fc2196243e80952de51a1/proto/provenance/metadata/v1/query.proto#L307-L316 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/query.proto#L312-L321 The only input to this query is pagination information. ### Response -+++ https://github.com/provenance-io/provenance/blob/3b77d267d4336deba89fc2196243e80952de51a1/proto/provenance/metadata/v1/query.proto#L318-L327 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/query.proto#L323-L332 --- @@ -98,7 +98,7 @@ The only input to this query is pagination information. The `Sessions` query gets sessions. ### Request -+++ https://github.com/provenance-io/provenance/blob/3b77d267d4336deba89fc2196243e80952de51a1/proto/provenance/metadata/v1/query.proto#L330-L352 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/query.proto#L334-L357 The `scope_id` can either be scope uuid, e.g. `91978ba2-5f35-459a-86a7-feca1b0512e0` or a scope address, e.g. `scope1qzge0zaztu65tx5x5llv5xc9ztsqxlkwel`. Similarly, the `session_id` can either be a uuid or session address, e.g. @@ -127,7 +127,7 @@ By default, the scope and records are not included. Set `include_scope` and/or `include_records` to true to include the scope and/or records. ### Response -+++ https://github.com/provenance-io/provenance/blob/3b77d267d4336deba89fc2196243e80952de51a1/proto/provenance/metadata/v1/query.proto#L354-L365 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/query.proto#L359-L370 --- @@ -138,12 +138,12 @@ The `SessionsAll` query gets all sessions. This query is paginated. ### Request -+++ https://github.com/provenance-io/provenance/blob/3b77d267d4336deba89fc2196243e80952de51a1/proto/provenance/metadata/v1/query.proto#L377-L386 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/query.proto#L382-L391 The only input to this query is pagination information. ### Response -+++ https://github.com/provenance-io/provenance/blob/3b77d267d4336deba89fc2196243e80952de51a1/proto/provenance/metadata/v1/query.proto#L388-L397 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/query.proto#L393-L402 --- @@ -152,7 +152,7 @@ The only input to this query is pagination information. The `Records` query gets records. ### Request -+++ https://github.com/provenance-io/provenance/blob/3b77d267d4336deba89fc2196243e80952de51a1/proto/provenance/metadata/v1/query.proto#L399-L422 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/query.proto#L404-L427 The `record_addr`, if provided, must be a bech32 record address, e.g. `record1q2ge0zaztu65tx5x5llv5xc9ztsw42dq2jdvmdazuwzcaddhh8gmu3mcze3`. The `scope_id` can either be scope uuid, e.g. @@ -176,7 +176,7 @@ By default, the scope and sessions are not included. Set `include_scope` and/or `include_sessions` to true to include the scope and/or sessions. ### Response -+++ https://github.com/provenance-io/provenance/blob/3b77d267d4336deba89fc2196243e80952de51a1/proto/provenance/metadata/v1/query.proto#L424-L435 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/query.proto#L429-L440 --- @@ -187,12 +187,12 @@ The `RecordsAll` query gets all records. This query is paginated. ### Request -+++ https://github.com/provenance-io/provenance/blob/3b77d267d4336deba89fc2196243e80952de51a1/proto/provenance/metadata/v1/query.proto#L447-L456 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/query.proto#L452-L461 The only input to this query is pagination information. ### Response -+++ https://github.com/provenance-io/provenance/blob/3b77d267d4336deba89fc2196243e80952de51a1/proto/provenance/metadata/v1/query.proto#L458-L467 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/query.proto#L463-L472 --- @@ -205,12 +205,12 @@ A scope is owned by an address if the address is listed as either an owner, or t This query is paginated. ### Request -+++ https://github.com/provenance-io/provenance/blob/3b77d267d4336deba89fc2196243e80952de51a1/proto/provenance/metadata/v1/query.proto#L469-L477 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/query.proto#L474-L482 The `address` should be a bech32 address string. ### Response -+++ https://github.com/provenance-io/provenance/blob/3b77d267d4336deba89fc2196243e80952de51a1/proto/provenance/metadata/v1/query.proto#L479-L488 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/query.proto#L484-L493 --- @@ -221,12 +221,12 @@ The `ValueOwnership` query gets gets the ids of scopes that list an address as t This query is paginated. ### Request -+++ https://github.com/provenance-io/provenance/blob/3b77d267d4336deba89fc2196243e80952de51a1/proto/provenance/metadata/v1/query.proto#L490-L498 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/query.proto#L495-L503 The `address` should be a bech32 address string. ### Response -+++ https://github.com/provenance-io/provenance/blob/3b77d267d4336deba89fc2196243e80952de51a1/proto/provenance/metadata/v1/query.proto#L500-L509 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/query.proto#L505-L514 --- @@ -235,13 +235,13 @@ The `address` should be a bech32 address string. The `ScopeSpecification` query gets a scope specification. ### Request -+++ https://github.com/provenance-io/provenance/blob/3b77d267d4336deba89fc2196243e80952de51a1/proto/provenance/metadata/v1/query.proto#L511-L528 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/query.proto#L516-L533 The `specification_id` can either be a uuid, e.g. `dc83ea70-eacd-40fe-9adf-1cf6148bf8a2` or a bech32 scope specification address, e.g. `scopespec1qnwg86nsatx5pl56muw0v9ytlz3qu3jx6m`. ### Response -+++ https://github.com/provenance-io/provenance/blob/3b77d267d4336deba89fc2196243e80952de51a1/proto/provenance/metadata/v1/query.proto#L530-L541 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/query.proto#L535-L546 --- @@ -252,12 +252,12 @@ The `ScopeSpecificationsAll` query gets all scope specifications. This query is paginated. ### Request -+++ https://github.com/provenance-io/provenance/blob/3b77d267d4336deba89fc2196243e80952de51a1/proto/provenance/metadata/v1/query.proto#L551-L560 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/query.proto#L556-L565 The only input to this query is pagination information. ### Response -+++ https://github.com/provenance-io/provenance/blob/3b77d267d4336deba89fc2196243e80952de51a1/proto/provenance/metadata/v1/query.proto#L562-L571 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/query.proto#L567-L576 --- @@ -266,7 +266,7 @@ The only input to this query is pagination information. The `ContractSpecification` query gets a contract specification. ### Request -+++ https://github.com/provenance-io/provenance/blob/3b77d267d4336deba89fc2196243e80952de51a1/proto/provenance/metadata/v1/query.proto#L573-L589 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/query.proto#L578-L594 The `specification_id` can either be a uuid, e.g. `def6bc0a-c9dd-4874-948f-5206e6060a84`, a bech32 contract specification address, e.g. `contractspec1q000d0q2e8w5say53afqdesxp2zqzkr4fn`, or a bech32 record specification @@ -278,7 +278,7 @@ Set `include_record_specs` to true to include them in the result. ### Response -+++ https://github.com/provenance-io/provenance/blob/3b77d267d4336deba89fc2196243e80952de51a1/proto/provenance/metadata/v1/query.proto#L591-L602 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/query.proto#L596-L606 --- @@ -289,12 +289,12 @@ The `ContractSpecificationsAll` query gets all contract specifications. This query is paginated. ### Request -+++ https://github.com/provenance-io/provenance/blob/3b77d267d4336deba89fc2196243e80952de51a1/proto/provenance/metadata/v1/query.proto#L612-L621 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/query.proto#L616-L625 The only input to this query is pagination information. ### Response -+++ https://github.com/provenance-io/provenance/blob/3b77d267d4336deba89fc2196243e80952de51a1/proto/provenance/metadata/v1/query.proto#L623-L633 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/query.proto#L627-L636 --- @@ -306,7 +306,7 @@ The only difference between this query and `ContractSpecification` with `include this query does not return the contract specification. ### Request -+++ https://github.com/provenance-io/provenance/blob/3b77d267d4336deba89fc2196243e80952de51a1/proto/provenance/metadata/v1/query.proto#L635-L649 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/query.proto#L638-L652 The `specification_id` can either be a uuid, e.g. `def6bc0a-c9dd-4874-948f-5206e6060a84`, a bech32 contract specification address, e.g. `contractspec1q000d0q2e8w5say53afqdesxp2zqzkr4fn`, or a bech32 record specification @@ -314,7 +314,7 @@ address, e.g. `recspec1qh00d0q2e8w5say53afqdesxp2zw42dq2jdvmdazuwzcaddhh8gmuqhez address, then the contract specification that contains that record specification is used. ### Response -+++ https://github.com/provenance-io/provenance/blob/3b77d267d4336deba89fc2196243e80952de51a1/proto/provenance/metadata/v1/query.proto#L651-L664 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/query.proto#L654-L666 --- @@ -323,7 +323,7 @@ address, then the contract specification that contains that record specification The `RecordSpecification` query gets a record specification. ### Request -+++ https://github.com/provenance-io/provenance/blob/3b77d267d4336deba89fc2196243e80952de51a1/proto/provenance/metadata/v1/query.proto#L666-L683 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/query.proto#L668-L685 The `specification_id` can either be a uuid, e.g. `def6bc0a-c9dd-4874-948f-5206e6060a84` or a bech32 contract specification address, e.g. `contractspec1q000d0q2e8w5say53afqdesxp2zqzkr4fn`. @@ -335,7 +335,7 @@ It is required if the `specification_id` is a uuid or contract specification add It is ignored if the `specification_id` is a record specification address. ### Response -+++ https://github.com/provenance-io/provenance/blob/3b77d267d4336deba89fc2196243e80952de51a1/proto/provenance/metadata/v1/query.proto#L685-L692 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/query.proto#L687-L694 --- @@ -346,12 +346,12 @@ The `RecordSpecificationsAll` query gets all record specifications. This query is paginated. ### Request -+++ https://github.com/provenance-io/provenance/blob/3b77d267d4336deba89fc2196243e80952de51a1/proto/provenance/metadata/v1/query.proto#L702-L711 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/query.proto#L704-L713 The only input to this query is pagination information. ### Response -+++ https://github.com/provenance-io/provenance/blob/3b77d267d4336deba89fc2196243e80952de51a1/proto/provenance/metadata/v1/query.proto#L713-L723 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/query.proto#L715-L724 --- @@ -361,12 +361,12 @@ The `GetByAddr` query looks up metadata entries and/or specifications for a give The results of this query are not wrapped with id information like the other queries, and only returns the exact entries requested. ### Request -+++ https://github.com/provenance-io/provenance/blob/3b77d267d4336deba89fc2196243e80952de51a1/proto/provenance/metadata/v1/query.proto#L725-L729 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/query.proto#L726-L730 The `addrs` can contain any valid metadata address bech32 strings. ### Response -+++ https://github.com/provenance-io/provenance/blob/3b77d267d4336deba89fc2196243e80952de51a1/proto/provenance/metadata/v1/query.proto#L731-L747 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/query.proto#L732-L748 Any invalid or nonexistent `addrs` will be in the `not_found` list. @@ -376,12 +376,12 @@ Any invalid or nonexistent `addrs` will be in the `not_found` list. The `OSLocatorParams` query gets the parameters of the Object Store Locator sub-module. ### Request -+++ https://github.com/provenance-io/provenance/blob/3b77d267d4336deba89fc2196243e80952de51a1/proto/provenance/metadata/v1/query.proto#L749-L753 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/query.proto#L750-L754 There are no inputs for this query. ### Response -+++ https://github.com/provenance-io/provenance/blob/3b77d267d4336deba89fc2196243e80952de51a1/proto/provenance/metadata/v1/query.proto#L755-L762 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/query.proto#L756-L763 --- @@ -390,12 +390,12 @@ There are no inputs for this query. The `OSLocator` query gets an Object Store Locator for an address. ### Request -+++ https://github.com/provenance-io/provenance/blob/3b77d267d4336deba89fc2196243e80952de51a1/proto/provenance/metadata/v1/query.proto#L764-L770 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/query.proto#L765-L771 The `owner` should be a bech32 address string. ### Response -+++ https://github.com/provenance-io/provenance/blob/3b77d267d4336deba89fc2196243e80952de51a1/proto/provenance/metadata/v1/query.proto#L772-L778 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/query.proto#L773-L779 --- @@ -404,12 +404,12 @@ The `owner` should be a bech32 address string. The `OSLocatorsByURI` query gets the object store locators by URI. ### Request -+++ https://github.com/provenance-io/provenance/blob/3b77d267d4336deba89fc2196243e80952de51a1/proto/provenance/metadata/v1/query.proto#L780-L788 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/query.proto#L781-L789 The `uri` is string the URI to find object store locators for. ### Response -+++ https://github.com/provenance-io/provenance/blob/3b77d267d4336deba89fc2196243e80952de51a1/proto/provenance/metadata/v1/query.proto#L790-L798 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/query.proto#L791-L799 --- @@ -418,13 +418,13 @@ The `uri` is string the URI to find object store locators for. The `OSLocatorsByScope` query gets the object store locators for the owners and value owner of a scope. ### Request -+++ https://github.com/provenance-io/provenance/blob/3b77d267d4336deba89fc2196243e80952de51a1/proto/provenance/metadata/v1/query.proto#L800-L806 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/query.proto#L801-L807 The `scope_id`, must either be scope uuid, e.g. `91978ba2-5f35-459a-86a7-feca1b0512e0` or a scope address, e.g. `scope1qzge0zaztu65tx5x5llv5xc9ztsqxlkwel` ### Response -+++ https://github.com/provenance-io/provenance/blob/3b77d267d4336deba89fc2196243e80952de51a1/proto/provenance/metadata/v1/query.proto#L808-L814 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/query.proto#L809-L815 --- @@ -435,12 +435,12 @@ The `OSAllLocators` query gets all object store locators. This query is paginated. ### Request -+++ https://github.com/provenance-io/provenance/blob/3b77d267d4336deba89fc2196243e80952de51a1/proto/provenance/metadata/v1/query.proto#L816-L822 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/query.proto#L817-L823 The only input to this query is pagination information. ### Response -+++ https://github.com/provenance-io/provenance/blob/3b77d267d4336deba89fc2196243e80952de51a1/proto/provenance/metadata/v1/query.proto#L824-L832 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/query.proto#L825-L833 --- ## AccountData @@ -448,9 +448,9 @@ The only input to this query is pagination information. The `AccountData` query gets the account data associated with a scope. ### Request -+++ https://github.com/provenance-io/provenance/blob/3b77d267d4336deba89fc2196243e80952de51a1/proto/provenance/metadata/v1/query.proto#L834-L843 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/query.proto#L835-L840 The `metadata_addr` must be a scope id, e.g. `scope1qzge0zaztu65tx5x5llv5xc9ztsqxlkwel`. ### Response -+++ https://github.com/provenance-io/provenance/blob/3b77d267d4336deba89fc2196243e80952de51a1/proto/provenance/metadata/v1/query.proto#L845-L849 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/metadata/v1/query.proto#L842-L846 diff --git a/x/oracle/spec/03_messages.md b/x/oracle/spec/03_messages.md index 8eb34eaa0b..0b757f2f7c 100644 --- a/x/oracle/spec/03_messages.md +++ b/x/oracle/spec/03_messages.md @@ -7,38 +7,38 @@ order: 3 In this section we describe the processing of the oracle messages and their corresponding updates to the state. - - [Msg/UpdateOracleRequest](#msgupdateoraclerequest) - - [Msg/SendQueryOracleRequest](#msgsendqueryoraclerequest) + - [Msg/UpdateOracle](#msgupdateoracle) + - [Msg/SendQueryOracle](#msgsendqueryoracle) --- -## Msg/UpdateOracleRequest +## Msg/UpdateOracle The oracle's address is modified by proposing the `MsgUpdateOracleRequest` message. ### Request -+++ https://github.com/provenance-io/provenance/blob/65865991f93e2c1a7647e29be11f6527f49616e6/proto/provenance/oracle/v1/tx.proto#L37-L46 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/oracle/v1/tx.proto#L40-L49 ### Response -+++ https://github.com/provenance-io/provenance/blob/65865991f93e2c1a7647e29be11f6527f49616e6/proto/provenance/oracle/v1/tx.proto#L48-L49 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/oracle/v1/tx.proto#L51-L52 The message will fail under the following conditions: * The authority does not match the gov module. * The new address does not pass basic integrity and format checks. -## Msg/SendQueryOracleRequest +## Msg/SendQueryOracle Sends a query to another chain's `Oracle` using `ICQ`. ### Request -+++ https://github.com/provenance-io/provenance/blob/65865991f93e2c1a7647e29be11f6527f49616e6/proto/provenance/oracle/v1/tx.proto#L21-L29 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/oracle/v1/tx.proto#L22-L32 ### Response -+++ https://github.com/provenance-io/provenance/blob/65865991f93e2c1a7647e29be11f6527f49616e6/proto/provenance/oracle/v1/tx.proto#L31-L35 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/oracle/v1/tx.proto#L34-L38 The message will fail under the following conditions: * The authority does not pass basic integrity and format checks. diff --git a/x/oracle/spec/04_queries.md b/x/oracle/spec/04_queries.md index c41647b124..6890ab7d1f 100644 --- a/x/oracle/spec/04_queries.md +++ b/x/oracle/spec/04_queries.md @@ -7,32 +7,32 @@ order: 4 In this section we describe the queries available for looking up oracle information. - - [Query Oracle Address](#query-oracle-address) - - [Query Oracle](#query-oracle) + - [Query/OracleAddress](#queryoracleaddress) + - [Query/Oracle](#queryoracle) --- -## Query Oracle Address +## Query/OracleAddress The `QueryOracleAddress` query is used to obtain the address of the module's oracle. ### Request -+++ https://github.com/provenance-io/provenance/blob/5afab1b1797b0071cf6a19ea5928c5b8f8831329/proto/provenance/oracle/v1/query.proto#L26-L27 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/oracle/v1/query.proto#L25-L26 ### Response -+++ https://github.com/provenance-io/provenance/blob/5afab1b1797b0071cf6a19ea5928c5b8f8831329/proto/provenance/oracle/v1/query.proto#L29-L33 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/oracle/v1/query.proto#L28-L32 --- -## Query Oracle +## Query/Oracle The `QueryOracle` query forwards a query to the module's oracle. ### Request -+++ https://github.com/provenance-io/provenance/blob/5afab1b1797b0071cf6a19ea5928c5b8f8831329/proto/provenance/oracle/v1/query.proto#L35-L39 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/oracle/v1/query.proto#L34-L38 ### Response -+++ https://github.com/provenance-io/provenance/blob/5afab1b1797b0071cf6a19ea5928c5b8f8831329/proto/provenance/oracle/v1/query.proto#L41-L45 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/oracle/v1/query.proto#L40-L44 The data from the `query` field is a `CosmWasm query` forwarded to the `oracle`. diff --git a/x/oracle/spec/06_genesis.md b/x/oracle/spec/06_genesis.md index 7d5e744a0f..48d6c7acd0 100644 --- a/x/oracle/spec/06_genesis.md +++ b/x/oracle/spec/06_genesis.md @@ -7,12 +7,12 @@ order: 6 In this section we describe the processing of the oracle messages and the corresponding updates to the state. - - [Msg/GenesisState](#msggenesisstate) + - [GenesisState](#genesisstate) --- -## Msg/GenesisState +## GenesisState The GenesisState encompasses the upcoming sequence ID for an ICQ packet, the associated parameters, the designated port ID for the module, and the oracle address. These values are both extracted for export and imported for storage within the store. -+++ https://github.com/provenance-io/provenance/blob/ba0b65c54f61f99c951fe4694271847dbad0fb00/proto/provenance/oracle/v1/genesis.proto#L11-L24 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/oracle/v1/genesis.proto#L10-L19 diff --git a/x/quarantine/spec/03_messages.md b/x/quarantine/spec/03_messages.md index 33ec8aa0db..fd4b99ab4e 100644 --- a/x/quarantine/spec/03_messages.md +++ b/x/quarantine/spec/03_messages.md @@ -12,7 +12,7 @@ An account can activate quarantine using a `MsgOptIn`. It contains only the address to quarantine. -+++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/cosmos/quarantine/v1beta1/tx.proto#L33-L38 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/cosmos/quarantine/v1beta1/tx.proto#L36-L41 It is expected to fail if the `to_address` is invalid. @@ -21,7 +21,7 @@ It is expected to fail if the `to_address` is invalid. An account can deactivate quarantine using a `MsgOptOut`. It contains only the address to unquarantine. -+++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/cosmos/quarantine/v1beta1/tx.proto#L43-L48 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/cosmos/quarantine/v1beta1/tx.proto#L46-L51 It is expected to fail if the `to_address` is invalid. @@ -31,7 +31,7 @@ Quarantined funds can be accepted by the intended receiver using a `MsgAccept`. It contains a `to_address` (receiver) and one or more `from_addresses` (senders). It also contains a flag to indicate whether auto-accept should be set up for all provided addresses. -+++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/cosmos/quarantine/v1beta1/tx.proto#L53-L67 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/cosmos/quarantine/v1beta1/tx.proto#L56-L70 Any quarantined funds for the `to_address` from any `from_address` are accepted (regardless of whether they've been previously declined). @@ -47,7 +47,7 @@ It is expected to fail if: The response will contain a total of all funds released. -+++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/cosmos/quarantine/v1beta1/tx.proto#L69-L74 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/cosmos/quarantine/v1beta1/tx.proto#L72-L81 ## Msg/Decline @@ -55,7 +55,7 @@ Quarantined funds can be declined by the intended receiver using a `MsgDecline`. It contains a `to_address` (receiver) and one or more `from_addresses` (senders). It also contains a flag to indicate whether auto-decline should be set up for all provided addresses. -+++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/cosmos/quarantine/v1beta1/tx.proto#L76-L90 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/cosmos/quarantine/v1beta1/tx.proto#L83-L97 Any quarantined funds for the `to_address` from any `from_address` are declined. @@ -74,7 +74,7 @@ It is expected to fail if: Auto-Responses can be defined either through the `permanent` flags with a `MsgAccept` or `MsgDecline`, or using a `MsgUpdateAutoResponses`. It contains a `to_address` and a list of `updates`. Each `AutoResponseUpdate` contains a `from_address` and the desired `response` for it. -+++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/cosmos/quarantine/v1beta1/tx.proto#L95-L104 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/cosmos/quarantine/v1beta1/tx.proto#L102-L111 Providing a `response` of `AUTO_RESPONSE_UNSPECIFIED` will cause the applicable entry to be deleted, allowing users to un-set previous auto-responses. diff --git a/x/quarantine/spec/05_queries.md b/x/quarantine/spec/05_queries.md index 2c8ccad300..7e3d83611d 100644 --- a/x/quarantine/spec/05_queries.md +++ b/x/quarantine/spec/05_queries.md @@ -34,8 +34,9 @@ Response: +++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/cosmos/quarantine/v1beta1/query.proto#L67-L74 QuarantinedFunds: + -+++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/cosmos/quarantine/v1beta1/quarantine.proto#L10-L21 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/cosmos/quarantine/v1beta1/quarantine.proto#L11-L26 - If neither a `to_address` nor `from_address` are provided, all non-declined quarantined funds for any addresses will be returned. - If the request contains a `to_address` but no `from_address`, all non-declined quarantined funds for the `to_address` are returned. @@ -62,8 +63,9 @@ Response: +++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/cosmos/quarantine/v1beta1/query.proto#L87-L94 AutoResponseEntry: + -+++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/cosmos/quarantine/v1beta1/quarantine.proto#L23-L31 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/cosmos/quarantine/v1beta1/quarantine.proto#L28-L36 - If no `from_address` is provided, all auto-response entries for the provided `to_address` are returned. The results will not contain any entries for `AUTO_RESPONSE_UNSPECIFIED`. - If a `from_address` is provided, the auto-response setting that `to_address` has from `from_address` is returned. This result might be `AUTO_RESPONSE_UNSPECIFIED`. diff --git a/x/sanction/spec/03_messages.md b/x/sanction/spec/03_messages.md index 0cba427a8b..346e1c984d 100644 --- a/x/sanction/spec/03_messages.md +++ b/x/sanction/spec/03_messages.md @@ -12,7 +12,7 @@ All Msg Service endpoints in the `x/sanction` module are for use with governance A user can request that accounts be sanctioned by submitting a governance proposal containing a `MsgSanction`. It contains the list of `addresses` of accounts to be sanctioned and the `authority` able to do it. -+++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/cosmos/sanction/v1beta1/tx.proto#L22-L32 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/cosmos/sanction/v1beta1/tx.proto#L24-L34 If the proposal ever has enough total deposit (defined in params), immediate temporary sanctions are issued for each address. Temporary sanctions expire at the completion of the governance proposal regardless of outcome. @@ -31,7 +31,7 @@ It is expected to fail if: A user can request that accounts be unsanctioned by submitting a governance proposal containing a `MsgUnsanction`. It contains the list of `addresses` of accounts to be unsanctioned and the `authority` able to do it. -+++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/cosmos/sanction/v1beta1/tx.proto#L37-L47 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/cosmos/sanction/v1beta1/tx.proto#L39-L49 If the proposal ever has enough total deposit (defined in params), immediate temporary unsanctions are issued for each address. Temporary unsanctions expire at the completion of the governance proposal regardless of outcome. @@ -49,7 +49,7 @@ It is expected to fail if: The sanction module params can be updated by submitting a governance proposal containing a `MsgUpdateParams`. It contains the desired new `params` and the `authority` able to update them. -+++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/cosmos/sanction/v1beta1/tx.proto#L52-L62 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/cosmos/sanction/v1beta1/tx.proto#L54-L64 If `params` is `null`, they will be deleted from state, reverting them to their code-defined defaults. If a field in `params` is `null` or empty, the record in state will reflect that. diff --git a/x/sanction/spec/05_queries.md b/x/sanction/spec/05_queries.md index 413de6ce54..56b34f50ad 100644 --- a/x/sanction/spec/05_queries.md +++ b/x/sanction/spec/05_queries.md @@ -60,12 +60,14 @@ Response: +++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/cosmos/sanction/v1beta1/query.proto#L69-L75 TemporaryEntry: + -+++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/cosmos/sanction/v1beta1/sanction.proto#L27-L35 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/cosmos/sanction/v1beta1/sanction.proto#L36-L44 TempStatus: + -+++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/cosmos/sanction/v1beta1/sanction.proto#L37-L47 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/cosmos/sanction/v1beta1/sanction.proto#L46-L56 - If an `address` is provided, only temporary entries associated with that address are returned. - If an `address` is provided that does not have any temporary entries, a single `TemporaryEntry` with a `status` of `TEMP_STATUS_UNSPECIFIED` is returned. diff --git a/x/trigger/spec/02_state.md b/x/trigger/spec/02_state.md index f5164d3892..33761e499f 100644 --- a/x/trigger/spec/02_state.md +++ b/x/trigger/spec/02_state.md @@ -28,7 +28,7 @@ The excess gas on a MsgCreateTrigger transaction will be used for the `Trigger's * Event Listener: `0x02 | Event Type (32 bytes) | Order (8 bytes) -> []byte{}` * Gas Limit: `0x04 | Trigger ID (8 bytes) -> uint64(GasLimit)` -+++ https://github.com/provenance-io/provenance/blob/bda28e5f58a4a58e8fef21141400ad362b84518b/proto/provenance/trigger/v1/trigger.proto#L13-L26 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/trigger/v1/trigger.proto#L13-L25 ### TriggerEventI @@ -38,28 +38,29 @@ A `Trigger` must have an event that implements the `TriggerEventI` interface. Cu The `BlockHeightEvent` allows the user to configure their `Trigger` to fire when the current block's `Block Height` is greater than or equal to the defined one. -+++ https://github.com/provenance-io/provenance/blob/bda28e5f58a4a58e8fef21141400ad362b84518b/proto/provenance/trigger/v1/trigger.proto#L41-L49 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/trigger/v1/trigger.proto#L39-L46 #### BlockTimeEvent The `BlockTimeEvent` allows the user to configure their `Trigger` to fire when the current block's `Block Time` is greater than or equal to the defined one. -+++ https://github.com/provenance-io/provenance/blob/bda28e5f58a4a58e8fef21141400ad362b84518b/proto/provenance/trigger/v1/trigger.proto#L51-L59 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/trigger/v1/trigger.proto#L48-L55 #### TransactionEvent The `TransactionEvent` allows the user to configure their `Trigger` to fire when a transaction event matching the user defined one has been emitted. -+++ https://github.com/provenance-io/provenance/blob/bda28e5f58a4a58e8fef21141400ad362b84518b/proto/provenance/trigger/v1/trigger.proto#L61-L71 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/trigger/v1/trigger.proto#L57-L66 ##### Attribute The `Attribute` is used by the `TransactionEvent` to allow the user to configure which attributes must be present on the transaction event. An `Attribute` with an empty `value` will only require the `name` to match. -+++ https://github.com/provenance-io/provenance/blob/bda28e5f58a4a58e8fef21141400ad362b84518b/proto/provenance/trigger/v1/trigger.proto#L73-L82 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/trigger/v1/trigger.proto#L68-L76 --- ## Queue + The `Queue` is an internal structure that we use to store and throttle the execution of `Triggers` on the `BeginBlock`. We store each `Trigger` as a `QueuedTrigger`, and then manipulate the `Queue Start Index` and `Queue Length` whenever we add or remove from the `Queue`. When we add to the `Queue`, the new element is added to the `QueueStartIndex` + `Length`. The `QueueLength` is then incremented by one. When we dequeue from the Queue, the `QueueStartIndex` will be incremented by 1 and the `QueueLength` is decremented by 1. We also ensure the key of the dequeued element is removed. @@ -67,4 +68,4 @@ The `Queue` is an internal structure that we use to store and throttle the execu * Queue Start Index: `0x06 -> uint64(QueueStartIndex)` * Queue Length: `0x07 -> uint64(QueueLength)` -+++ https://github.com/provenance-io/provenance/blob/bda28e5f58a4a58e8fef21141400ad362b84518b/proto/provenance/trigger/v1/trigger.proto#L28-L39 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/trigger/v1/trigger.proto#L27-L37 diff --git a/x/trigger/spec/03_messages.md b/x/trigger/spec/03_messages.md index 3f5f4feb80..ca21f01ef9 100644 --- a/x/trigger/spec/03_messages.md +++ b/x/trigger/spec/03_messages.md @@ -7,21 +7,21 @@ order: 3 In this section we describe the processing of the trigger messages and the corresponding updates to the state. - - [Msg/CreateTriggerRequest](#msgcreatetriggerrequest) - - [Msg/DestroyTriggerRequest](#msgdestroytriggerrequest) + - [Msg/CreateTrigger](#msgcreatetrigger) + - [Msg/DestroyTrigger](#msgdestroytrigger) -## Msg/CreateTriggerRequest +## Msg/CreateTrigger Creates a `Trigger` that will fire when its event has been detected. If the message has more than one signer, then the newly created `Trigger` will designate the first signer as the owner. ### Request -+++ https://github.com/provenance-io/provenance/blob/bda28e5f58a4a58e8fef21141400ad362b84518b/proto/provenance/trigger/v1/tx.proto#L20-L31 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/trigger/v1/tx.proto#L23-L34 ### Response -+++ https://github.com/provenance-io/provenance/blob/bda28e5f58a4a58e8fef21141400ad362b84518b/proto/provenance/trigger/v1/tx.proto#L33-L37 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/trigger/v1/tx.proto#L36-L40 The message will fail under the following conditions: * The authority is an invalid bech32 address @@ -30,17 +30,17 @@ The message will fail under the following conditions: * At least one action is not a valid `sdk.Msg` * The signers on one or more actions aren't in the set of the request's signers. -## Msg/DestroyTriggerRequest +## Msg/DestroyTrigger Destroys a `Trigger` that has been created and is still registered. ### Request -+++ https://github.com/provenance-io/provenance/blob/bda28e5f58a4a58e8fef21141400ad362b84518b/proto/provenance/trigger/v1/tx.proto#L39-L48 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/trigger/v1/tx.proto#L42-L51 ### Response -+++ https://github.com/provenance-io/provenance/blob/bda28e5f58a4a58e8fef21141400ad362b84518b/proto/provenance/trigger/v1/tx.proto#L50-L51 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/trigger/v1/tx.proto#L53-L54 The message will fail under the following conditions: * The `Trigger` does not exist diff --git a/x/trigger/spec/04_queries.md b/x/trigger/spec/04_queries.md index c552fb5e79..e430b0b870 100644 --- a/x/trigger/spec/04_queries.md +++ b/x/trigger/spec/04_queries.md @@ -7,35 +7,35 @@ order: 4 In this section we describe the queries available for looking up trigger information. - - [Query Trigger By ID](#query-trigger-by-id) - - [Query Triggers](#query-triggers) + - [Query/TriggerByID](#querytriggerbyid) + - [Query/Triggers](#querytriggers) --- -## Query Trigger By ID +## Query/TriggerByID The `QueryTriggerByID` query is used to obtain the content of a specific Trigger. ### Request -+++ https://github.com/provenance-io/provenance/blob/bda28e5f58a4a58e8fef21141400ad362b84518b/proto/provenance/trigger/v1/query.proto#L25-L29 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/trigger/v1/query.proto#L25-L29 The `id` is the unique identifier for the Trigger. ### Response -+++ https://github.com/provenance-io/provenance/blob/bda28e5f58a4a58e8fef21141400ad362b84518b/proto/provenance/trigger/v1/query.proto#L31-L35 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/trigger/v1/query.proto#L31-L35 --- -## Query Triggers +## Query/Triggers The `QueryTriggers` query is used to obtain all Triggers. ### Request -+++ https://github.com/provenance-io/provenance/blob/bda28e5f58a4a58e8fef21141400ad362b84518b/proto/provenance/trigger/v1/query.proto#L37-L41 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/trigger/v1/query.proto#L37-L41 ### Response -+++ https://github.com/provenance-io/provenance/blob/bda28e5f58a4a58e8fef21141400ad362b84518b/proto/provenance/trigger/v1/query.proto#L43-L49 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/trigger/v1/query.proto#L43-L49 diff --git a/x/trigger/spec/07_genesis.md b/x/trigger/spec/07_genesis.md index 474396146b..43fd719ebe 100644 --- a/x/trigger/spec/07_genesis.md +++ b/x/trigger/spec/07_genesis.md @@ -7,8 +7,8 @@ order: 7 In this section we describe the processing of the trigger messages and the corresponding updates to the state. -## Msg/GenesisState +## GenesisState GenesisState contains a list of triggers, queued triggers, and gas limits. It also tracks the triggerID and the queue start. These are exported and later imported from/to the store. -+++ https://github.com/provenance-io/provenance/blob/bda28e5f58a4a58e8fef21141400ad362b84518b/proto/provenance/trigger/v1/genesis.proto#L11-L30 ++++ https://github.com/provenance-io/provenance/blob/v1.19.0/proto/provenance/trigger/v1/genesis.proto#L11-L30