MCPcopy Create free account
hub / github.com/argotorg/solidity / createCBORMetadata

Method createCBORMetadata

libsolidity/interface/CompilerStack.cpp:1961–1998  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1959};
1960
1961bytes CompilerStack::createCBORMetadata(Contract const& _contract, bool _forIR) const
1962{
1963 if (m_metadataFormat == MetadataFormat::NoMetadata)
1964 return bytes{};
1965
1966 bool const usesExperimentalSyntax = !_contract.contract->sourceUnit().annotation().experimentalFeatures.empty();
1967 bool const onlySafeExperimentalFeatures = onlySafeExperimentalFeaturesActivated(
1968 _contract.contract->sourceUnit().annotation().experimentalFeatures
1969 );
1970
1971 if (m_eofVersion.has_value() || (usesExperimentalSyntax && !onlySafeExperimentalFeatures))
1972 solAssert(m_experimental, "Experimental mode not enabled");
1973
1974 std::string meta = (_forIR == m_viaIR ? metadata(_contract) : createMetadata(_contract, _forIR));
1975
1976 MetadataCBOREncoder encoder;
1977
1978 if (m_metadataHash == MetadataHash::IPFS)
1979 encoder.pushBytes("ipfs", util::ipfsHash(meta));
1980 else if (m_metadataHash == MetadataHash::Bzzr1)
1981 encoder.pushBytes("bzzr1", util::bzzr1Hash(meta).asBytes());
1982 else
1983 solAssert(m_metadataHash == MetadataHash::None, "Invalid metadata hash");
1984
1985 if (m_experimental)
1986 encoder.pushBool("experimental", true);
1987 if (m_metadataFormat == MetadataFormat::WithReleaseVersionTag)
1988 encoder.pushBytes("solc", VersionCompactBytes);
1989 else
1990 {
1991 solAssert(
1992 m_metadataFormat == MetadataFormat::WithPrereleaseVersionTag,
1993 "Invalid metadata format."
1994 );
1995 encoder.pushString("solc", VersionStringStrict);
1996 }
1997 return encoder.serialise();
1998}
1999
2000namespace
2001{

Callers

nothing calls this directly

Calls 8

bzzr1HashFunction · 0.85
pushBytesMethod · 0.80
asBytesMethod · 0.80
pushBoolMethod · 0.80
pushStringMethod · 0.80
serialiseMethod · 0.80
emptyMethod · 0.45

Tested by

no test coverage detected