Releases: storyprotocol/protocol-periphery-v1
v1.3.1
This release builds on v1.3.0 with enhanced security, improved code efficiency, and expanded test coverage, while ensuring workflow contract backward compatibility and improving permission handling.
What's Changed
Backward Compatibility
Security Improvements
- Replaced permanent permission with transient permission (#176)
- Other security fixes (#175):
- Ensured
msg.sender
matchessigner
in workflow contracts - Used
safeERC20
inSPGNFT
- Added initializers for future-proofing
- Made
nonReentrant
modifier precede all other modifiers inTokenizerModule
- Allowed setting
TotalLicenseTokenLimit
to0
(no limit) in licensing hook - Replaced
_mint
with_safeMint
inSPGNFT
- Ensured
Story NFT
- Refactored
OrgStoryNFTFactory
contract to reduce code redundancy (#156)
Documentation, Tests & Miscellaneous Fixes
- Added new integration tests and fixed existing ones (#162, #177)
- Fixed typos and improved documentation/comments (#163, #164, #167, #168, #169, #173)
- Updated dependencies (#179)
Contributors
@sebsadface, @nnsW3, @lukema95, @VolodymyrBg, @Marcofann, @Dimitrolito, @Himess
Full Changelog: v1.3.0...v1.3.1
v1.3.0
What's Changed
-
StoryNFT & SPGNFT
Introduced Story NFT, enabled post-deployment URI changes, added upgrade scripts, added ERC-7572 contract-level metadata, included deduplication support, extractedOrgNFT
logic toBaseOrgStoryNFT
, madeStoryBadgeNFT
upgradeable, implemented IP metadata setting, and resolved a reentrancy vulnerability.
(#87, #91, #92, #95, #98, #108, #109, #111, #113) -
Cacheable NFT
Introduced cacheable features for StoryBadgeNFT, added auto-cache capabilities, fixed removal from cache, and provided a cache state getter.
(#114, #115, #116, #117) -
Licensing
Added permission handling toregisterPILTermsAndAttach
, introduced hooks to limit total license tokens and lock licensing, supported custom license templates, enabled multi-license attachment (including during IP registration), addedmaxRevenueShare
parameter, enforced data validation, and restored v1.2 compatibility in licensing workflows.
(#89, #99, #100, #102, #123, #128, #133, #134, #145, #146, #150, #154) -
Grouping & Royalty
Added royalty claiming for group IPs, introducedRoyaltyTokenDistributionWorkflows
, removed snapshots inRoyaltyWorkflows
/GroupingWorkflows
, deployed royalty vaults for IPs without one, updated royalty logic to align with core changes, testedcollectRoyaltiesAndClaimReward
, and restored v1.2 compatibility.
(#97, #105, #118, #136, #139, #148, #152) -
Tokenizer Module
Introduced the Tokenizer Module and implementedOwnableERC20
.
(#143, #144) -
Derivatives
Restored v1.2 compatibility toDerivativeWorkflows
and introduced batch permissions for derivative registration.
(#147, #155) -
Registration
Restored v1.2 compatibility toRegistrationWorkflows
.
(#151) -
Deployment & Testing
Updated tests, scripts, and integrations to reflect core PoC changes, used pre-deployed CREATE3, and applied minor fixes.
(#93, #101, #103, #140, #141, #160) -
Refactoring & Chores
Replaced direct permission calls withexecuteWithSig
, reverted those changes when necessary, cleaned up storage, added missing documentation, and fixed typos.
(#121, #133, #137, #149, #158)
New Contributors
- @vipocenka made their first contribution in #149
Full Changelog: v1.2.3...v1.3.0
v1.2.4
What's Changed
- Introduced Story NFT (#87) with various enhancements:
- Implemented ERC-7572 contract-level metadata support (#95)
- Added permission handling in
registerPILTermsAndAttach
(#89) - Added royalty claiming for group IPs (#97)
- Added logic deploy royalty vault for group member IPs without existing vaults (#105)
Full Changelog: v1.2.3...v1.2.4
v1.2.3
What's Changed
- Refactored SPG into "workflow" contracts and introduced
RoyaltyWorkflows
for IP revenue claiming (#68, #74) - Fixed and enhanced tests and upgrade scripts: changed mock IPGraph precompile address, added integration tests, improved test logs, and added missing
run
function calls. (#69, #79, #80, #81) - Optimized royalty and licensing: removed
currencyTokens
parameter, extracted batch claim functions, and removedhasIpAttachedLicenseTerms
check (#75, #84) - Added
registerGroupAndAttachLicense
function for grouping (#85) - Repo enhancement, bumped solidity version to 0.8.26, and misc. (#70, #77, #78, #86)
Full Changelog: v1.2.1...v1.2.3
v1.2.2
What's Changed
Full Changelog: v1.2.1...v1.2.2
v1.2.1
What's Changed
- Added support for public minting in SPG and SPGNFT (#65).
- Added support for setting and retrieving base URI for SPGNFT (#66).
- Made license attachment idempotent in SPG (#59).
- Integrated
predictMintingLicenseFee
from the licensing module for minting fee calculations (#64). - Bumped protocol-core dependencies to v1.2.1 and other minor updates (#63, #67).
Full Changelog: v1.2.0...v1.2.1
v1.2.0
What's Changed
- Introduced workflow contracts and Group IPA features, including deployment scripts for
GroupingWorkflows
(#43, #50) - Introduced
DeployHelper
to encapsulate deployment logic for periphery contracts deployment (#52) - Added support for custom license templates in
GroupingWorkflows
(#55) - Added public minting fee recipient control and resolved inconsistent licensing issues (#16, #48)
- Updated documentation and added a gas analysis report (#47, #53)
- Bumped protocol-core dependencies to v1.2.0 and misc. (#51, #56)
Full Changelog: v1.1.0...v1.2.0
v1.1.0
- Migrate periphery contracts from protocol core repo (#1)
- Revamped SPG with NFT collection and mint token logic. (#5, #6)
- Added support for batch transactions via
multicall
(#38) - Added functionality for registering IP with metadata and supporting metadata for SPG NFT. (#8, #20, #37)
- Addressed ownership transfer issues in deployment script. (#18, #39)
- Fixed issues with derivative registration, including minting fees for commercial licenses, license token flow, and making register and attach PIL terms idempotent. (#23, #25, #30)
- Added SPG & SPG NFT upgrade scripts (#10)
- Added IP Graph, Solady's ERC6551 integration, and core protocol package bumps. (#30)
- Enhance CI/CD, repo, and misc.(#2, #3, #11, #32)
Full Changelog: v1.1.0