Skip to content

Commit

Permalink
Refactor initial fetching of NFDs and filtering.
Browse files Browse the repository at this point in the history
Added ability to filter NFDs so they have to have specific verified fields set.
Updated generated swagger NFD API
  • Loading branch information
pbennett committed Apr 4, 2024
1 parent 0898e13 commit f5934c6
Show file tree
Hide file tree
Showing 35 changed files with 211 additions and 410 deletions.
5 changes: 4 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ The default is to read from a send.json file in the current directory, but this
## JSON Configuration

The application also accepts a JSON configuration file as input. Here is an example configuration file with all possible options shown. Any value left out is assumed 'false' or 0.
Some of these options are conflicting to be specified together.
Some of these options conflict with eachother if specified together.

```json
{
Expand All @@ -105,6 +105,7 @@ Some of these options are conflicting to be specified together.
"count": 100,
"onlyRoots": false
},
"verifiedRequirements": ["twitter", "caAlgo"],
"sendToVaults": true
}
}
Expand All @@ -124,6 +125,8 @@ Some of these options are conflicting to be specified together.
- `count`: If specified, this is the number of NFDS to choose randomly from the total list. ie: All segments of root X, but only pick 100 random recipients by specifying a count here.
- `onlyRoots`: Determines whether only root NFDs are allowed.
- Only applicable if segmentsOfRoot isn't specified - if left off then ALL nfds are chosen. If specified, only select roots.
- `verifiedRequirements`: An optional array of verified field names. If specified, the destination NFD must have ALL of the specified verified fields.
- The field names are case-sensitive. All should be lowercase, but caAlgo is special and is the verified list of algorand addresses.
- `sendToVaults`: Determines whether to send to vaults.
- This is a key option and for most 'aidrops' should be chosen. The recipient doesn't have to be opted-in before-hand. As the sender you have to pay the .1 MBR fee per asset (only if their vault isn't already opted-in).

Expand Down
3 changes: 0 additions & 3 deletions lib/nfdapi/swagger/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@ Class | Method | HTTP request | Description
*NfdApi* | [**NfdEscrowOffer**](docs/NfdApi.md#nfdescrowoffer) | **Post** /nfd/escrowOffer/{name} | escrowOffer nfd
*NfdApi* | [**NfdGetLookup**](docs/NfdApi.md#nfdgetlookup) | **Get** /nfd/lookup | Reverse Address lookup with results returned per address
*NfdApi* | [**NfdGetNFD**](docs/NfdApi.md#nfdgetnfd) | **Get** /nfd/{nameOrID} | Get a specific NFD by name or by its application ID
*NfdApi* | [**NfdGetNFDsForAddresses**](docs/NfdApi.md#nfdgetnfdsforaddresses) | **Get** /nfd/address | [DEPRECATED] Reverse Address lookup
*NfdApi* | [**NfdGetNFDsForAddressesV2**](docs/NfdApi.md#nfdgetnfdsforaddressesv2) | **Get** /nfd/v2/address | Reverse Address lookup with results returned per address
*NfdApi* | [**NfdGetNameSig**](docs/NfdApi.md#nfdgetnamesig) | **Get** /nfd/nameSig/{name} | getNameSig nfd
*NfdApi* | [**NfdGetOpenAuctions**](docs/NfdApi.md#nfdgetopenauctions) | **Get** /nfd/auction | Get all open auctions or those open for a particular name
Expand All @@ -50,7 +49,6 @@ Class | Method | HTTP request | Description
*NfdApi* | [**NfdKickoff**](docs/NfdApi.md#nfdkickoff) | **Post** /nfd/kickoff | kickoff nfd
*NfdApi* | [**NfdLinkAddress**](docs/NfdApi.md#nfdlinkaddress) | **Post** /nfd/links/addAddress/{name} | linkAddress nfd
*NfdApi* | [**NfdOffer**](docs/NfdApi.md#nfdoffer) | **Post** /nfd/offer/{name} | offer nfd
*NfdApi* | [**NfdPartnerKickoff**](docs/NfdApi.md#nfdpartnerkickoff) | **Post** /nfd/partnerKickoff | partnerKickoff nfd
*NfdApi* | [**NfdPostOfferToOwner**](docs/NfdApi.md#nfdpostoffertoowner) | **Post** /nfd/postOfferToOwner/{name} | postOfferToOwner nfd
*NfdApi* | [**NfdPurchase**](docs/NfdApi.md#nfdpurchase) | **Post** /nfd/purchase/{name} | purchase nfd
*NfdApi* | [**NfdRescindOffer**](docs/NfdApi.md#nfdrescindoffer) | **Post** /nfd/rescindOffer/{name} | rescindOffer nfd
Expand Down Expand Up @@ -99,7 +97,6 @@ Class | Method | HTTP request | Description
- [NfdRecordinaddress](docs/NfdRecordinaddress.md)
- [NfdV2SearchRecords](docs/NfdV2SearchRecords.md)
- [OfferRequestBody](docs/OfferRequestBody.md)
- [PartnerKickoffRequestBody](docs/PartnerKickoffRequestBody.md)
- [PostOfferToOwnerRequestBody](docs/PostOfferToOwnerRequestBody.md)
- [PurchaseRequestBody](docs/PurchaseRequestBody.md)
- [RateLimited](docs/RateLimited.md)
Expand Down
307 changes: 28 additions & 279 deletions lib/nfdapi/swagger/api_nfd.go

Large diffs are not rendered by default.

8 changes: 4 additions & 4 deletions lib/nfdapi/swagger/model_consensus_record.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,14 @@ import (
// ConsensusRecord contains information about an account that participated in consensus
type ConsensusRecord struct {
Account string `json:"account"`
LastPropBlock int32 `json:"lastPropBlock,omitempty"`
LastPropBlock int64 `json:"lastPropBlock,omitempty"`
LastPropTime time.Time `json:"lastPropTime,omitempty"`
LastVoteBlock int32 `json:"lastVoteBlock,omitempty"`
LastVoteBlock int64 `json:"lastVoteBlock,omitempty"`
LastVoteTime time.Time `json:"lastVoteTime,omitempty"`
LinkType string `json:"linkType,omitempty"`
OwnerAccount string `json:"ownerAccount"`
PctOfOnline float64 `json:"pctOfOnline"`
Proposals int32 `json:"proposals,omitempty"`
Proposals int64 `json:"proposals,omitempty"`
Rank int64 `json:"rank,omitempty"`
Votes int32 `json:"votes,omitempty"`
Votes int64 `json:"votes,omitempty"`
}
2 changes: 1 addition & 1 deletion lib/nfdapi/swagger/model_donation.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,5 @@ type Donation struct {
// Sender or Receiver Algorand address depending on request
Address string `json:"address"`
// Total donation in microAlgos
Total int32 `json:"total"`
Total int64 `json:"total"`
}
2 changes: 1 addition & 1 deletion lib/nfdapi/swagger/model_escrow_offer_request_body.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,5 @@ package swagger
type EscrowOfferRequestBody struct {
Buyer string `json:"buyer"`
// Amount in microAlgo to escrow as new floor price
Offer int32 `json:"offer"`
Offer int64 `json:"offer"`
}
2 changes: 1 addition & 1 deletion lib/nfdapi/swagger/model_is_valid_asa_response_body.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ package swagger

// Whether NFD NFT ASA ID is for authentic NFD
type IsValidAsaResponseBody struct {
AppID int32 `json:"appID"`
AppID int64 `json:"appID"`
IsValid bool `json:"isValid"`
Message string `json:"message"`
Name string `json:"name"`
Expand Down
10 changes: 5 additions & 5 deletions lib/nfdapi/swagger/model_nfd.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@ import (
// NFD contains all known information about an NFD record
type Nfd struct {
// NFD Application ID
AppID int32 `json:"appID,omitempty"`
AppID int64 `json:"appID,omitempty"`
// NFD ASA ID
AsaID int32 `json:"asaID,omitempty"`
AsaID int64 `json:"asaID,omitempty"`
// Whether the verified Avatar set in this NFD is newer (arc19) then is set into the NFD. This will only be present on direct NFD fetch and if true
AvatarOutdated bool `json:"avatarOutdated,omitempty"`
// Verified Algorand addresses for this NFD
Expand All @@ -27,7 +27,7 @@ type Nfd struct {
CacheControl string `json:"cache-control,omitempty"`
Category string `json:"category,omitempty"`
// Round this data was last fetched from
CurrentAsOfBlock int32 `json:"currentAsOfBlock,omitempty"`
CurrentAsOfBlock int64 `json:"currentAsOfBlock,omitempty"`
// account wallets should send funds to - precedence is: caAlgo[0], unverifiedCaAlgo[0], owner
DepositAccount string `json:"depositAccount,omitempty"`
// ETag
Expand All @@ -39,13 +39,13 @@ type Nfd struct {
// Owner of NFD
Owner string `json:"owner,omitempty"`
// NFD Application ID of Parent if this is a segment
ParentAppID int32 `json:"parentAppID,omitempty"`
ParentAppID int64 `json:"parentAppID,omitempty"`
Properties *NfdProperties `json:"properties,omitempty"`
// Reserved owner of NFD
ReservedFor string `json:"reservedFor,omitempty"`
SaleType string `json:"saleType,omitempty"`
// amount NFD is being sold for (microAlgos)
SellAmount int32 `json:"sellAmount,omitempty"`
SellAmount int64 `json:"sellAmount,omitempty"`
// RecipientUid of NFD sales
Seller string `json:"seller,omitempty"`
SigNameAddress string `json:"sigNameAddress,omitempty"`
Expand Down
2 changes: 1 addition & 1 deletion lib/nfdapi/swagger/model_nfd_activity.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ import (
// NFDActivity contains the property changes made in a particular NFD contract update call
type NfdActivity struct {
// Algorand Block number of change
Block int32 `json:"block"`
Block int64 `json:"block"`
CacheControl string `json:"cache-control,omitempty"`
// Changed properties
Changes map[string]string `json:"changes,omitempty"`
Expand Down
4 changes: 2 additions & 2 deletions lib/nfdapi/swagger/model_nfd_analytic_event.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@ package swagger

// NFDAnalyticEvent contains a price history record for a point in time of an NFD
type NfdAnalyticEvent struct {
Block int32 `json:"block,omitempty"`
Block int64 `json:"block,omitempty"`
Buyer string `json:"buyer,omitempty"`
// extra amount paid to cover minimum balance requirements - add to price to determine total amount paid
CarryCost int32 `json:"carryCost,omitempty"`
CarryCost int64 `json:"carryCost,omitempty"`
Category string `json:"category,omitempty"`
// NFD current owner - if set via includeOwner property
CurrentOwner string `json:"currentOwner,omitempty"`
Expand Down
2 changes: 1 addition & 1 deletion lib/nfdapi/swagger/model_nfd_analytic_record.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import (
type NfdAnalyticRecord struct {
Data *NfdAnalyticEvent `json:"data,omitempty"`
// price of event in microAlgos
Price int32 `json:"price,omitempty"`
Price int64 `json:"price,omitempty"`
// price of event in USD
PriceUsd float64 `json:"priceUsd,omitempty"`
Timestamp time.Time `json:"timestamp,omitempty"`
Expand Down
2 changes: 1 addition & 1 deletion lib/nfdapi/swagger/model_nfd_analytic_records.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,5 @@ type NfdAnalyticRecords struct {
MatchCheck string `json:"match-check,omitempty"`
Results []NfdAnalyticRecord `json:"results"`
// total number of results, with data containing paged amount based on offset/limit
Total int32 `json:"total"`
Total int64 `json:"total"`
}
8 changes: 4 additions & 4 deletions lib/nfdapi/swagger/model_nfd_auction.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,15 @@ import (

type NfdAuction struct {
// Price in microAlgos
CeilingPrice int32 `json:"ceilingPrice"`
CeilingPrice int64 `json:"ceilingPrice"`
// Price in microAlgos
CurrentPrice int32 `json:"currentPrice,omitempty"`
CurrentPrice int64 `json:"currentPrice,omitempty"`
EndTime time.Time `json:"endTime"`
// Price in microAlgos
FloorPrice int32 `json:"floorPrice"`
FloorPrice int64 `json:"floorPrice"`
Name string `json:"name"`
NewEndTime time.Time `json:"newEndTime,omitempty"`
// Escrowed floor price in microAlgos
NewFloorPrice int32 `json:"newFloorPrice,omitempty"`
NewFloorPrice int64 `json:"newFloorPrice,omitempty"`
StartTime time.Time `json:"startTime"`
}
4 changes: 2 additions & 2 deletions lib/nfdapi/swagger/model_nfd_auction_and_price.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,11 @@ package swagger
type NfdAuctionAndPrice struct {
AuctionInfo *NfdAuction `json:"auctionInfo"`
// Change in price per minute
ChangePerMinute int32 `json:"changePerMinute,omitempty"`
ChangePerMinute int64 `json:"changePerMinute,omitempty"`
// Minutes elapsed so far in Auction
ElapsedMinutes int64 `json:"elapsedMinutes,omitempty"`
// Current price in microAlgos
Price int32 `json:"price,omitempty"`
Price int64 `json:"price,omitempty"`
// Total number of minutes in Auction
TotalMinutes int64 `json:"totalMinutes,omitempty"`
}
6 changes: 3 additions & 3 deletions lib/nfdapi/swagger/model_nfd_record.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ type NfdRecord struct {
CaAlgo []string `json:"caAlgo,omitempty"`
Category string `json:"category,omitempty"`
// Round this data was last fetched from
CurrentAsOfBlock int32 `json:"currentAsOfBlock,omitempty"`
CurrentAsOfBlock int64 `json:"currentAsOfBlock,omitempty"`
// account wallets should send funds to - precedence is: caAlgo[0], unverifiedCaAlgo[0], owner
DepositAccount string `json:"depositAccount,omitempty"`
// Not returned, used in tagging for response to indicate if-none-match etag matched
Expand All @@ -36,13 +36,13 @@ type NfdRecord struct {
// Owner of NFD
Owner string `json:"owner,omitempty"`
// NFD Application ID of Parent if this is a segment
ParentAppID int32 `json:"parentAppID,omitempty"`
ParentAppID int64 `json:"parentAppID,omitempty"`
Properties *NfdProperties `json:"properties,omitempty"`
// Reserved owner of NFD
ReservedFor string `json:"reservedFor,omitempty"`
SaleType string `json:"saleType,omitempty"`
// amount NFD is being sold for (microAlgos)
SellAmount int32 `json:"sellAmount,omitempty"`
SellAmount int64 `json:"sellAmount,omitempty"`
// RecipientUid of NFD sales
Seller string `json:"seller,omitempty"`
SigNameAddress string `json:"sigNameAddress,omitempty"`
Expand Down
10 changes: 5 additions & 5 deletions lib/nfdapi/swagger/model_nfd_record_response_full.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@ import (
// NFD contains all known information about an NFD record (full view)
type NfdRecordResponseFull struct {
// NFD Application ID
AppID int32 `json:"appID,omitempty"`
AppID int64 `json:"appID,omitempty"`
// NFD ASA ID
AsaID int32 `json:"asaID,omitempty"`
AsaID int64 `json:"asaID,omitempty"`
// Whether the verified Avatar set in this NFD is newer (arc19) then is set into the NFD. This will only be present on direct NFD fetch and if true
AvatarOutdated bool `json:"avatarOutdated,omitempty"`
// Verified Algorand addresses for this NFD
Expand All @@ -27,7 +27,7 @@ type NfdRecordResponseFull struct {
CacheControl string `json:"cache-control,omitempty"`
Category string `json:"category,omitempty"`
// Round this data was last fetched from
CurrentAsOfBlock int32 `json:"currentAsOfBlock,omitempty"`
CurrentAsOfBlock int64 `json:"currentAsOfBlock,omitempty"`
// account wallets should send funds to - precedence is: caAlgo[0], unverifiedCaAlgo[0], owner
DepositAccount string `json:"depositAccount,omitempty"`
// ETag
Expand All @@ -41,13 +41,13 @@ type NfdRecordResponseFull struct {
// Owner of NFD
Owner string `json:"owner,omitempty"`
// NFD Application ID of Parent if this is a segment
ParentAppID int32 `json:"parentAppID,omitempty"`
ParentAppID int64 `json:"parentAppID,omitempty"`
Properties *NfdProperties `json:"properties,omitempty"`
// Reserved owner of NFD
ReservedFor string `json:"reservedFor,omitempty"`
SaleType string `json:"saleType,omitempty"`
// amount NFD is being sold for (microAlgos)
SellAmount int32 `json:"sellAmount,omitempty"`
SellAmount int64 `json:"sellAmount,omitempty"`
// RecipientUid of NFD sales
Seller string `json:"seller,omitempty"`
SigNameAddress string `json:"sigNameAddress,omitempty"`
Expand Down
10 changes: 5 additions & 5 deletions lib/nfdapi/swagger/model_nfd_recordinaddress.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@ import (
// NFD contains all known information about an NFD record
type NfdRecordinaddress struct {
// NFD Application ID
AppID int32 `json:"appID,omitempty"`
AppID int64 `json:"appID,omitempty"`
// NFD ASA ID
AsaID int32 `json:"asaID,omitempty"`
AsaID int64 `json:"asaID,omitempty"`
// Whether the verified Avatar set in this NFD is newer (arc19) then is set into the NFD. This will only be present on direct NFD fetch and if true
AvatarOutdated bool `json:"avatarOutdated,omitempty"`
// Verified Algorand addresses for this NFD
Expand All @@ -27,7 +27,7 @@ type NfdRecordinaddress struct {
CacheControl string `json:"cache-control,omitempty"`
Category string `json:"category,omitempty"`
// Round this data was last fetched from
CurrentAsOfBlock int32 `json:"currentAsOfBlock,omitempty"`
CurrentAsOfBlock int64 `json:"currentAsOfBlock,omitempty"`
// account wallets should send funds to - precedence is: caAlgo[0], unverifiedCaAlgo[0], owner
DepositAccount string `json:"depositAccount,omitempty"`
// ETag
Expand All @@ -41,13 +41,13 @@ type NfdRecordinaddress struct {
// Owner of NFD
Owner string `json:"owner,omitempty"`
// NFD Application ID of Parent if this is a segment
ParentAppID int32 `json:"parentAppID,omitempty"`
ParentAppID int64 `json:"parentAppID,omitempty"`
Properties *NfdProperties `json:"properties,omitempty"`
// Reserved owner of NFD
ReservedFor string `json:"reservedFor,omitempty"`
SaleType string `json:"saleType,omitempty"`
// amount NFD is being sold for (microAlgos)
SellAmount int32 `json:"sellAmount,omitempty"`
SellAmount int64 `json:"sellAmount,omitempty"`
// RecipientUid of NFD sales
Seller string `json:"seller,omitempty"`
SigNameAddress string `json:"sigNameAddress,omitempty"`
Expand Down
2 changes: 1 addition & 1 deletion lib/nfdapi/swagger/model_nfd_v2_search_records.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,5 @@ type NfdV2SearchRecords struct {
MatchCheck string `json:"match-check,omitempty"`
Nfds *[]NfdRecord `json:"nfds"`
// total number of results, with data containing paged amount based on offset/limit
Total int32 `json:"total"`
Total int64 `json:"total"`
}
2 changes: 1 addition & 1 deletion lib/nfdapi/swagger/model_offer_request_body.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ package swagger

type OfferRequestBody struct {
// Amount in microAlgo to sell the NFD for. 1 ALGO is 1,000,000 microAlgo. 1 ALGO minimum, 100 million maximum.
Offer int32 `json:"offer"`
Offer int64 `json:"offer"`
// Whether to pay the offer amount + fees to the account the NFD is reserved for. Equivalent to 'gifting' the NFD
PayReceiver bool `json:"payReceiver,omitempty"`
ReservedFor string `json:"reservedFor,omitempty"`
Expand Down
17 changes: 0 additions & 17 deletions lib/nfdapi/swagger/model_partner_kickoff_request_body.go

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,6 @@ type PostOfferToOwnerRequestBody struct {
// Note to pass along to the NFD owner. Must be provided but can be blank
Note string `json:"note"`
// Amount in microAlgo being offered to the NFD owner
Offer int32 `json:"offer"`
Offer int64 `json:"offer"`
Sender string `json:"sender"`
}
2 changes: 1 addition & 1 deletion lib/nfdapi/swagger/model_purchase_request_body.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ package swagger
type PurchaseRequestBody struct {
Buyer string `json:"buyer"`
// Amount in microAlgo to purchase/claim the NFD for
Offer int32 `json:"offer"`
Offer int64 `json:"offer"`
// Whether to reject receiving the NFT into the purchasers account, leaving or returning it to the NFDs vault instead
RejectNFT bool `json:"rejectNFT,omitempty"`
}
2 changes: 1 addition & 1 deletion lib/nfdapi/swagger/model_segment_lock_request_body.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ type SegmentLockRequestBody struct {
// Whether to lock (true), or unlock (false)
Lock bool `json:"lock"`
// amount users minting off the segment have to pay to mint in USD (in cents - ie: 300 = $3.00). Set to 0 if locking
SellAmount int32 `json:"sellAmount"`
SellAmount int64 `json:"sellAmount"`
// Sender of transaction - needs to be owner of NFD
Sender string `json:"sender"`
}
6 changes: 3 additions & 3 deletions lib/nfdapi/swagger/model_segment_price_response_body.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,13 @@ type SegmentPriceResponseBody struct {
// Price of ALGO in USD
AlgoUsd float64 `json:"algoUsd"`
// Algorand carry cost - amount required for MBR (Minimum Balance Requirement) of contracts, escrows, etc
CarryCost int32 `json:"carryCost"`
CarryCost int64 `json:"carryCost"`
// Discount rate % that is applied for this segment name - 0 if discount point not reached - starting after 2500 NFDs
DiscountRate float64 `json:"discountRate"`
// Number of segments minted off of parent NFD
ParentSegmentCount int32 `json:"parentSegmentCount"`
ParentSegmentCount int64 `json:"parentSegmentCount"`
// Total Price in microAlgo to mint including ALGO carry cost
SellAmount int32 `json:"sellAmount"`
SellAmount int64 `json:"sellAmount"`
// Price in USD for unlocked mint of this segment
UnlockedSellPrice float64 `json:"unlockedSellPrice,omitempty"`
// Minimum price in USD the segment has to be (not including ALGO carry cost). If locked, the fixed price, or if unlocked, the platform price
Expand Down
4 changes: 2 additions & 2 deletions lib/nfdapi/swagger/model_send_from_vault_request_body.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@ package swagger

type SendFromVaultRequestBody struct {
// Base amount (in base units of specified asset - so decimals must be considered) of asset to send. If multiple assets are specified, amount is should be 0 as ALL of each are sent and closed out
Amount uint64 `json:"amount"`
Amount int64 `json:"amount"`
// Algorand ASA IDs to transfer FROM vault - use asset 0 to send ALGO. Specifying multiple assets means ALL of each are sent and amount is ignored. If receiver is a vault and needs to opt-in, then need MBR/opt-in pairs (5 pairs - 8 opt-ins each - 40 assets), then 6 send calls of 7 assets w/ 5 at end for total of 40. If receiver is already opted-in, then 112 (7 per txn, 16 tnxs) is max.
Assets []uint64 `json:"assets"`
Assets []int64 `json:"assets"`
// Optional note to include in asset send transaction
Note string `json:"note,omitempty"`
// Algorand account or NFD Name (if vault receiver) the asset(s) should be sent to
Expand Down
Loading

0 comments on commit f5934c6

Please sign in to comment.