Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
ff666fc
chore: make it compile with filecoin-proofs-api master branch
vmx May 19, 2023
e64d42c
feat: add various new APIs for Lotus
vmx May 19, 2023
78188dc
docs: document the new APIs
vmx May 26, 2023
f71ebda
wip Go bindings for new proving APIs
magik6k May 30, 2023
1592c20
chore: update rust-gpu-tools to v0.7
vmx May 30, 2023
2dc34dc
Add nicer wrapper for GenerateSDR
magik6k Jun 28, 2023
c33a723
fix: update build script after toolchain file was removed
cryptonemo Jun 30, 2023
65ee9ad
feat: update proofs to the latest release
cryptonemo Jun 30, 2023
20d0809
fix: update deps to latest
cryptonemo Jul 6, 2023
86bcf47
cleanup comments in proofs.go
magik6k Jul 31, 2023
f02ec14
feat: update dependencies to WIP synthetic-porep code
cryptonemo May 9, 2023
474a92c
style: rust fmt
cryptonemo May 9, 2023
7ff30e8
feat: add example of using SynthPoRep in existing test
cryptonemo May 9, 2023
62cab7c
feat: wire in new APIs
cryptonemo May 23, 2023
5205d60
feat: add clear_layer_data API and more robustly use synth-porep in test
cryptonemo May 24, 2023
ab8efea
feat: go-wrapper for ClearSyntheticProofs
arajasek May 25, 2023
8c3adb1
merged synth work
snadrus Jun 1, 2023
e7b9920
cleanup
snadrus Jul 3, 2023
d86eb41
fix go.mod
magik6k Jul 12, 2023
4b8ba69
Update deps after (messy) rebase
cryptonemo Jul 12, 2023
bc650c5
missing v21 engine mapping
magik6k Jul 12, 2023
58c3a4e
newer cargo lock
magik6k Jul 13, 2023
3330b79
Update Cargo.lock
cryptonemo Sep 5, 2023
0e72e9a
Update Cargo.lock
cryptonemo Sep 6, 2023
21f30a2
feat: point to fvm master after synthporep changes landed
cryptonemo Sep 6, 2023
3fe9b5e
fix: set proper fvm2 version
cryptonemo Sep 6, 2023
7cf5383
update the fvm & bls-signatures (to match the fvm)
Stebalien Sep 6, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ set -e
make clean
cd rust
rm -f Cargo.lock
rustup target add x86_64-apple-darwin --toolchain $(cat rust-toolchain)
rustup target add aarch64-apple-darwin --toolchain $(cat rust-toolchain)
rustup target add x86_64-apple-darwin
rustup target add aarch64-apple-darwin
cargo update -p "filecoin-proofs-api"
cargo install cargo-lipo
cd ..
Expand Down
25 changes: 15 additions & 10 deletions cgo/const.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,16 +16,21 @@ const (
)

const (
RegisteredSealProofStackedDrg2KiBV1 = C.REGISTERED_SEAL_PROOF_STACKED_DRG2_KI_B_V1
RegisteredSealProofStackedDrg8MiBV1 = C.REGISTERED_SEAL_PROOF_STACKED_DRG8_MI_B_V1
RegisteredSealProofStackedDrg512MiBV1 = C.REGISTERED_SEAL_PROOF_STACKED_DRG512_MI_B_V1
RegisteredSealProofStackedDrg32GiBV1 = C.REGISTERED_SEAL_PROOF_STACKED_DRG32_GI_B_V1
RegisteredSealProofStackedDrg64GiBV1 = C.REGISTERED_SEAL_PROOF_STACKED_DRG64_GI_B_V1
RegisteredSealProofStackedDrg2KiBV11 = C.REGISTERED_SEAL_PROOF_STACKED_DRG2_KI_B_V1_1
RegisteredSealProofStackedDrg8MiBV11 = C.REGISTERED_SEAL_PROOF_STACKED_DRG8_MI_B_V1_1
RegisteredSealProofStackedDrg512MiBV11 = C.REGISTERED_SEAL_PROOF_STACKED_DRG512_MI_B_V1_1
RegisteredSealProofStackedDrg32GiBV11 = C.REGISTERED_SEAL_PROOF_STACKED_DRG32_GI_B_V1_1
RegisteredSealProofStackedDrg64GiBV11 = C.REGISTERED_SEAL_PROOF_STACKED_DRG64_GI_B_V1_1
RegisteredSealProofStackedDrg2KiBV1 = C.REGISTERED_SEAL_PROOF_STACKED_DRG2_KI_B_V1
RegisteredSealProofStackedDrg8MiBV1 = C.REGISTERED_SEAL_PROOF_STACKED_DRG8_MI_B_V1
RegisteredSealProofStackedDrg512MiBV1 = C.REGISTERED_SEAL_PROOF_STACKED_DRG512_MI_B_V1
RegisteredSealProofStackedDrg32GiBV1 = C.REGISTERED_SEAL_PROOF_STACKED_DRG32_GI_B_V1
RegisteredSealProofStackedDrg64GiBV1 = C.REGISTERED_SEAL_PROOF_STACKED_DRG64_GI_B_V1
RegisteredSealProofStackedDrg2KiBV11 = C.REGISTERED_SEAL_PROOF_STACKED_DRG2_KI_B_V1_1
RegisteredSealProofStackedDrg8MiBV11 = C.REGISTERED_SEAL_PROOF_STACKED_DRG8_MI_B_V1_1
RegisteredSealProofStackedDrg512MiBV11 = C.REGISTERED_SEAL_PROOF_STACKED_DRG512_MI_B_V1_1
RegisteredSealProofStackedDrg32GiBV11 = C.REGISTERED_SEAL_PROOF_STACKED_DRG32_GI_B_V1_1
RegisteredSealProofStackedDrg64GiBV11 = C.REGISTERED_SEAL_PROOF_STACKED_DRG64_GI_B_V1_1
RegisteredSealProofStackedDrg2KiBV11_Feat_SyntheticPoRep = C.REGISTERED_SEAL_PROOF_STACKED_DRG2_KI_B_V1_1__FEAT__SYNTHETIC_PO_REP
RegisteredSealProofStackedDrg8MiBV11_Feat_SyntheticPoRep = C.REGISTERED_SEAL_PROOF_STACKED_DRG8_MI_B_V1_1__FEAT__SYNTHETIC_PO_REP
RegisteredSealProofStackedDrg512MiBV11_Feat_SyntheticPoRep = C.REGISTERED_SEAL_PROOF_STACKED_DRG512_MI_B_V1_1__FEAT__SYNTHETIC_PO_REP
RegisteredSealProofStackedDrg32GiBV11_Feat_SyntheticPoRep = C.REGISTERED_SEAL_PROOF_STACKED_DRG32_GI_B_V1_1__FEAT__SYNTHETIC_PO_REP
RegisteredSealProofStackedDrg64GiBV11_Feat_SyntheticPoRep = C.REGISTERED_SEAL_PROOF_STACKED_DRG64_GI_B_V1_1__FEAT__SYNTHETIC_PO_REP
)

const (
Expand Down
69 changes: 69 additions & 0 deletions cgo/proofs.go
Original file line number Diff line number Diff line change
Expand Up @@ -224,6 +224,39 @@ func ClearCache(sectorSize uint64, cacheDirPath SliceRefUint8) error {
return CheckErr(resp)
}

func ClearSyntheticProofs(sectorSize uint64, cacheDirPath SliceRefUint8) error {
resp := C.clear_synthetic_proofs(C.uint64_t(sectorSize), cacheDirPath)
defer resp.destroy()
return CheckErr(resp)
}
func ClearLayerData(sectorSize uint64, cacheDirPath SliceRefUint8) error {
resp := C.clear_layer_data(C.uint64_t(sectorSize), cacheDirPath)
defer resp.destroy()
return CheckErr(resp)
}

func GenerateSynthProofs(
registered_proof RegisteredSealProof,
comm_r, comm_d ByteArray32,
cache_dir_path, replica_path SliceRefUint8,
sector_id uint64,
prover_id, ticket ByteArray32,
pieces SliceRefPublicPieceInfo,
) error {
resp := C.generate_synth_proofs(registered_proof,
&comm_r,
&comm_d,
cache_dir_path,
replica_path,
C.uint64_t(sector_id),
&prover_id,
&ticket,
pieces,
)
defer resp.destroy()
return CheckErr(resp)
}

func Fauxrep(registeredProf RegisteredSealProof, cacheDirPath SliceRefUint8, sealedSectorPath SliceRefUint8) ([]byte, error) {
resp := C.fauxrep(registeredProf, cacheDirPath, sealedSectorPath)
defer resp.destroy()
Expand Down Expand Up @@ -381,3 +414,39 @@ func MergeWindowPoStPartitionProofs(registeredProof RegisteredPoStProof, partiti

return resp.value.copy(), nil
}

// PoRep primitives

func GenerateSDR(registeredProof RegisteredPoStProof, outDir SliceRefUint8, replicaID *ByteArray32) error {
resp := C.generate_sdr(registeredProof, outDir, replicaID)
defer resp.destroy()

return CheckErr(resp)
}

func GenerateTreeRLast(registeredProof RegisteredPoStProof, replicaPath, outDir SliceRefUint8) ([]byte, error) {
resp := C.generate_tree_r_last(registeredProof, replicaPath, outDir)
defer resp.destroy()
if err := CheckErr(resp); err != nil {
return nil, err
}

return resp.value.copy(), nil
}

func GenerateTreeC(registeredProof RegisteredPoStProof, inputDir, outDir SliceRefUint8) ([]byte, error) {
resp := C.generate_tree_c(registeredProof, inputDir, outDir)
defer resp.destroy()
if err := CheckErr(resp); err != nil {
return nil, err
}

return resp.value.copy(), nil
}

func EmptySectorUpdateDecodeFromRange(registeredProof RegisteredUpdateProof, commD, commR *ByteArray32, inputFd, sectorKeyFd, outputFd int32, nodesOffset, numNodes uint64) error {
resp := C.empty_sector_update_decode_from_range(registeredProof, commD, commR, C.int(inputFd), C.int(sectorKeyFd), C.int(outputFd), C.uint64_t(nodesOffset), C.uint64_t(numNodes))
defer resp.destroy()

return CheckErr(resp)
}
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ go 1.18
require (
github.com/filecoin-project/go-address v1.1.0
github.com/filecoin-project/go-fil-commcid v0.1.0
github.com/filecoin-project/go-state-types v0.11.1
github.com/filecoin-project/go-state-types v0.11.2-0.20230712101859-8f37624fa540
github.com/ipfs/go-block-format v0.0.3
github.com/ipfs/go-cid v0.3.2
github.com/ipfs/go-ipfs-blockstore v1.2.0
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@ github.com/filecoin-project/go-state-types v0.0.0-20200903145444-247639ffa6ad/go
github.com/filecoin-project/go-state-types v0.0.0-20200904021452-1883f36ca2f4/go.mod h1:IQ0MBPnonv35CJHtWSN3YY1Hz2gkPru1Q9qoaYLxx9I=
github.com/filecoin-project/go-state-types v0.0.0-20201102161440-c8033295a1fc/go.mod h1:ezYnPf0bNkTsDibL/psSz5dy4B5awOJ/E7P2Saeep8g=
github.com/filecoin-project/go-state-types v0.1.10/go.mod h1:UwGVoMsULoCK+bWjEdd/xLCvLAQFBC7EDT477SKml+Q=
github.com/filecoin-project/go-state-types v0.11.1 h1:GDtCN9V18bYVwXDZe+vJXc6Ck+qY9OUaQqpoVlp1FAk=
github.com/filecoin-project/go-state-types v0.11.1/go.mod h1:SyNPwTsU7I22gL2r0OAPcImvLoTVfgRwdK/Y5rR1zz8=
github.com/filecoin-project/go-state-types v0.11.2-0.20230712101859-8f37624fa540 h1:v0fbEnBrMIjlxLve1sJTJE0YNGg58SNiP5sxQtr3trc=
github.com/filecoin-project/go-state-types v0.11.2-0.20230712101859-8f37624fa540/go.mod h1:SyNPwTsU7I22gL2r0OAPcImvLoTVfgRwdK/Y5rR1zz8=
github.com/filecoin-project/specs-actors v0.9.4/go.mod h1:BStZQzx5x7TmCkLv0Bpa07U6cPKol6fd3w9KjMPZ6Z4=
github.com/frankban/quicktest v1.14.3/go.mod h1:mgiwOwqx65TmIk1wJ6Q7wvnVMocbUorkibMOrVTHZps=
github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4=
Expand Down
78 changes: 78 additions & 0 deletions proofs.go
Original file line number Diff line number Diff line change
Expand Up @@ -518,6 +518,25 @@ func UnsealRange(
)
}

func GenerateSDR(
proofType abi.RegisteredSealProof,
cacheDirPath string,
replicaId [32]byte,
) (err error) {
sp, err := toFilRegisteredSealProof(proofType)
if err != nil {
return err
}

replicaIdtBytes := cgo.AsByteArray32(replicaId[:])

return cgo.GenerateSDR(
sp,
cgo.AsSliceRefUint8([]byte(cacheDirPath)),
&replicaIdtBytes,
)
}

// GenerateWinningPoStSectorChallenge
func GenerateWinningPoStSectorChallenge(
proofType abi.RegisteredPoStProof,
Expand Down Expand Up @@ -642,6 +661,53 @@ func ClearCache(sectorSize uint64, cacheDirPath string) error {
return cgo.ClearCache(sectorSize, cgo.AsSliceRefUint8([]byte(cacheDirPath)))
}

// ClearSyntheticProofs
func ClearSyntheticProofs(sectorSize uint64, cacheDirPath string) error {
return cgo.ClearSyntheticProofs(sectorSize, cgo.AsSliceRefUint8([]byte(cacheDirPath)))
}

func ClearLayerData(sectorSize abi.SectorSize, cacheDirPath string) error {
return cgo.ClearLayerData(uint64(sectorSize), cgo.AsSliceRefUint8([]byte(cacheDirPath)))
}

func GenerateSynthProofs(
proofType abi.RegisteredSealProof,
sealedCID, unsealedCID cid.Cid,
cacheDirPath, replicaPath string,
sector_id abi.SectorNumber,
minerID abi.ActorID,
ticket []byte,
pieces []abi.PieceInfo,
) error {
sp, err := toFilRegisteredSealProof(proofType)
if err != nil {
return err
}
filPublicPieceInfos, err := toFilPublicPieceInfos(pieces)
if err != nil {
return err
}
commR, err := to32ByteCommR(sealedCID)
if err != nil {
return err
}

commD, err := to32ByteCommD(unsealedCID)
if err != nil {
return err
}
proverID, err := toProverID(minerID)
if err != nil {
return err
}
return cgo.GenerateSynthProofs(sp,
commR, commD,
cgo.AsSliceRefUint8([]byte(cacheDirPath)), cgo.AsSliceRefUint8([]byte(replicaPath)),
uint64(sector_id),
proverID, cgo.AsByteArray32(ticket),
cgo.AsSliceRefPublicPieceInfo(filPublicPieceInfos))
}

func FauxRep(proofType abi.RegisteredSealProof, cacheDirPath string, sealedSectorPath string) (cid.Cid, error) {
sp, err := toFilRegisteredSealProof(proofType)
if err != nil {
Expand Down Expand Up @@ -956,6 +1022,18 @@ func toFilRegisteredSealProof(p abi.RegisteredSealProof) (cgo.RegisteredSealProo
return cgo.RegisteredSealProofStackedDrg32GiBV11, nil
case abi.RegisteredSealProof_StackedDrg64GiBV1_1:
return cgo.RegisteredSealProofStackedDrg64GiBV11, nil

case abi.RegisteredSealProof_StackedDrg2KiBV1_1_Feat_SyntheticPoRep:
return cgo.RegisteredSealProofStackedDrg2KiBV11_Feat_SyntheticPoRep, nil
case abi.RegisteredSealProof_StackedDrg8MiBV1_1_Feat_SyntheticPoRep:
return cgo.RegisteredSealProofStackedDrg8MiBV11_Feat_SyntheticPoRep, nil
case abi.RegisteredSealProof_StackedDrg512MiBV1_1_Feat_SyntheticPoRep:
return cgo.RegisteredSealProofStackedDrg512MiBV11_Feat_SyntheticPoRep, nil
case abi.RegisteredSealProof_StackedDrg32GiBV1_1_Feat_SyntheticPoRep:
return cgo.RegisteredSealProofStackedDrg32GiBV11_Feat_SyntheticPoRep, nil
case abi.RegisteredSealProof_StackedDrg64GiBV1_1_Feat_SyntheticPoRep:
return cgo.RegisteredSealProofStackedDrg64GiBV11_Feat_SyntheticPoRep, nil

default:
return 0, errors.Errorf("no mapping to C.FFIRegisteredSealProof value available for: %v", p)
}
Expand Down
Loading